@tailng-ui/components 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/package.json +14 -0
- package/src/index.d.ts +7 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +7 -0
- package/src/index.js.map +1 -0
- package/src/lib/feedback/empty/tng-empty.component.d.ts +14 -0
- package/src/lib/feedback/empty/tng-empty.component.d.ts.map +1 -0
- package/src/lib/feedback/empty/tng-empty.component.js +60 -0
- package/src/lib/feedback/empty/tng-empty.component.js.map +1 -0
- package/src/lib/feedback/index.d.ts +11 -0
- package/src/lib/feedback/index.d.ts.map +1 -0
- package/src/lib/feedback/index.js +11 -0
- package/src/lib/feedback/index.js.map +1 -0
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts +10 -0
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts.map +1 -0
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.js +37 -0
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.js.map +1 -0
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts +14 -0
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts.map +1 -0
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js +55 -0
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js.map +1 -0
- package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts +10 -0
- package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts.map +1 -0
- package/src/lib/feedback/skeleton/tng-skeleton.component.js +33 -0
- package/src/lib/feedback/skeleton/tng-skeleton.component.js.map +1 -0
- package/src/lib/feedback/toast/tng-toast.component.d.ts +40 -0
- package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -0
- package/src/lib/feedback/toast/tng-toast.component.js +111 -0
- package/src/lib/feedback/toast/tng-toast.component.js.map +1 -0
- package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts +26 -0
- package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts.map +1 -0
- package/src/lib/form/autocomplete/tng-autocomplete.component.js +104 -0
- package/src/lib/form/autocomplete/tng-autocomplete.component.js.map +1 -0
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts +44 -0
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts.map +1 -0
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.js +123 -0
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.js.map +1 -0
- package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts +14 -0
- package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts.map +1 -0
- package/src/lib/form/button-toggle/tng-button-toggle.component.js +65 -0
- package/src/lib/form/button-toggle/tng-button-toggle.component.js.map +1 -0
- package/src/lib/form/checkbox/tng-checkbox.component.d.ts +38 -0
- package/src/lib/form/checkbox/tng-checkbox.component.d.ts.map +1 -0
- package/src/lib/form/checkbox/tng-checkbox.component.js +138 -0
- package/src/lib/form/checkbox/tng-checkbox.component.js.map +1 -0
- package/src/lib/form/chips/tng-chips.component.d.ts +4 -0
- package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -0
- package/src/lib/form/chips/tng-chips.component.js +16 -0
- package/src/lib/form/chips/tng-chips.component.js.map +1 -0
- package/src/lib/form/combobox/tng-combobox.component.d.ts +4 -0
- package/src/lib/form/combobox/tng-combobox.component.d.ts.map +1 -0
- package/src/lib/form/combobox/tng-combobox.component.js +16 -0
- package/src/lib/form/combobox/tng-combobox.component.js.map +1 -0
- package/src/lib/form/index.d.ts +37 -0
- package/src/lib/form/index.d.ts.map +1 -0
- package/src/lib/form/index.js +37 -0
- package/src/lib/form/index.js.map +1 -0
- package/src/lib/form/input/tng-input.component.d.ts +16 -0
- package/src/lib/form/input/tng-input.component.d.ts.map +1 -0
- package/src/lib/form/input/tng-input.component.js +52 -0
- package/src/lib/form/input/tng-input.component.js.map +1 -0
- package/src/lib/form/input-otp/tng-input-otp.component.d.ts +13 -0
- package/src/lib/form/input-otp/tng-input-otp.component.d.ts.map +1 -0
- package/src/lib/form/input-otp/tng-input-otp.component.js +138 -0
- package/src/lib/form/input-otp/tng-input-otp.component.js.map +1 -0
- package/src/lib/form/label/tng-label.component.d.ts +8 -0
- package/src/lib/form/label/tng-label.component.d.ts.map +1 -0
- package/src/lib/form/label/tng-label.component.js +29 -0
- package/src/lib/form/label/tng-label.component.js.map +1 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts +55 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts.map +1 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js +126 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js.map +1 -0
- package/src/lib/form/multiselect/tng-multiselect.component.d.ts +49 -0
- package/src/lib/form/multiselect/tng-multiselect.component.d.ts.map +1 -0
- package/src/lib/form/multiselect/tng-multiselect.component.js +112 -0
- package/src/lib/form/multiselect/tng-multiselect.component.js.map +1 -0
- package/src/lib/form/radio/tng-radio.component.d.ts +12 -0
- package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -0
- package/src/lib/form/radio/tng-radio.component.js +45 -0
- package/src/lib/form/radio/tng-radio.component.js.map +1 -0
- package/src/lib/form/select/tng-select.component.d.ts +40 -0
- package/src/lib/form/select/tng-select.component.d.ts.map +1 -0
- package/src/lib/form/select/tng-select.component.js +98 -0
- package/src/lib/form/select/tng-select.component.js.map +1 -0
- package/src/lib/form/select/tng-select.slots.d.ts +25 -0
- package/src/lib/form/select/tng-select.slots.d.ts.map +1 -0
- package/src/lib/form/select/tng-select.slots.js +23 -0
- package/src/lib/form/select/tng-select.slots.js.map +1 -0
- package/src/lib/form/slider/tng-slider.component.d.ts +11 -0
- package/src/lib/form/slider/tng-slider.component.d.ts.map +1 -0
- package/src/lib/form/slider/tng-slider.component.js +48 -0
- package/src/lib/form/slider/tng-slider.component.js.map +1 -0
- package/src/lib/form/switch/tng-switch.component.d.ts +18 -0
- package/src/lib/form/switch/tng-switch.component.d.ts.map +1 -0
- package/src/lib/form/switch/tng-switch.component.js +57 -0
- package/src/lib/form/switch/tng-switch.component.js.map +1 -0
- package/src/lib/form/textarea/tng-textarea.component.d.ts +17 -0
- package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -0
- package/src/lib/form/textarea/tng-textarea.component.js +54 -0
- package/src/lib/form/textarea/tng-textarea.component.js.map +1 -0
- package/src/lib/form/toggle/tng-toggle.component.d.ts +39 -0
- package/src/lib/form/toggle/tng-toggle.component.d.ts.map +1 -0
- package/src/lib/form/toggle/tng-toggle.component.js +152 -0
- package/src/lib/form/toggle/tng-toggle.component.js.map +1 -0
- package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts +3 -0
- package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts.map +1 -0
- package/src/lib/form/toggle-group/tng-toggle-group.component.js +34 -0
- package/src/lib/form/toggle-group/tng-toggle-group.component.js.map +1 -0
- package/src/lib/layout/accordion/tng-accordion.component.d.ts +11 -0
- package/src/lib/layout/accordion/tng-accordion.component.d.ts.map +1 -0
- package/src/lib/layout/accordion/tng-accordion.component.js +158 -0
- package/src/lib/layout/accordion/tng-accordion.component.js.map +1 -0
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts +4 -0
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts.map +1 -0
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js +16 -0
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js.map +1 -0
- package/src/lib/layout/card/tng-card.component.d.ts +42 -0
- package/src/lib/layout/card/tng-card.component.d.ts.map +1 -0
- package/src/lib/layout/card/tng-card.component.js +186 -0
- package/src/lib/layout/card/tng-card.component.js.map +1 -0
- package/src/lib/layout/collapsible/tng-collapsible.component.d.ts +11 -0
- package/src/lib/layout/collapsible/tng-collapsible.component.d.ts.map +1 -0
- package/src/lib/layout/collapsible/tng-collapsible.component.js +40 -0
- package/src/lib/layout/collapsible/tng-collapsible.component.js.map +1 -0
- package/src/lib/layout/drawer/tng-drawer.component.d.ts +12 -0
- package/src/lib/layout/drawer/tng-drawer.component.d.ts.map +1 -0
- package/src/lib/layout/drawer/tng-drawer.component.js +77 -0
- package/src/lib/layout/drawer/tng-drawer.component.js.map +1 -0
- package/src/lib/layout/grid/tng-grid.component.d.ts +4 -0
- package/src/lib/layout/grid/tng-grid.component.d.ts.map +1 -0
- package/src/lib/layout/grid/tng-grid.component.js +16 -0
- package/src/lib/layout/grid/tng-grid.component.js.map +1 -0
- package/src/lib/layout/index.d.ts +16 -0
- package/src/lib/layout/index.d.ts.map +1 -0
- package/src/lib/layout/index.js +16 -0
- package/src/lib/layout/index.js.map +1 -0
- package/src/lib/layout/separator/tng-separator.component.d.ts +6 -0
- package/src/lib/layout/separator/tng-separator.component.d.ts.map +1 -0
- package/src/lib/layout/separator/tng-separator.component.js +19 -0
- package/src/lib/layout/separator/tng-separator.component.js.map +1 -0
- package/src/lib/layout/stepper/tng-stepper.component.d.ts +4 -0
- package/src/lib/layout/stepper/tng-stepper.component.d.ts.map +1 -0
- package/src/lib/layout/stepper/tng-stepper.component.js +16 -0
- package/src/lib/layout/stepper/tng-stepper.component.js.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts +28 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +86 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts +10 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js +29 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts +3 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js +15 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts +6 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js +16 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts +6 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js +18 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts +23 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts.map +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js +155 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js.map +1 -0
- package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts +4 -0
- package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts.map +1 -0
- package/src/lib/navigation/context-menu/tng-context-menu.component.js +16 -0
- package/src/lib/navigation/context-menu/tng-context-menu.component.js.map +1 -0
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts +10 -0
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts.map +1 -0
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js +54 -0
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js.map +1 -0
- package/src/lib/navigation/index.d.ts +27 -0
- package/src/lib/navigation/index.d.ts.map +1 -0
- package/src/lib/navigation/index.js +27 -0
- package/src/lib/navigation/index.js.map +1 -0
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts +15 -0
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts.map +1 -0
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js +85 -0
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js.map +1 -0
- package/src/lib/navigation/menu/tng-menu.component.d.ts +13 -0
- package/src/lib/navigation/menu/tng-menu.component.d.ts.map +1 -0
- package/src/lib/navigation/menu/tng-menu.component.js +92 -0
- package/src/lib/navigation/menu/tng-menu.component.js.map +1 -0
- package/src/lib/navigation/menubar/tng-menubar.component.d.ts +5 -0
- package/src/lib/navigation/menubar/tng-menubar.component.d.ts.map +1 -0
- package/src/lib/navigation/menubar/tng-menubar.component.js +29 -0
- package/src/lib/navigation/menubar/tng-menubar.component.js.map +1 -0
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts +4 -0
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts.map +1 -0
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js +16 -0
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js.map +1 -0
- package/src/lib/navigation/tabs/tng-tabs.component.d.ts +5 -0
- package/src/lib/navigation/tabs/tng-tabs.component.d.ts.map +1 -0
- package/src/lib/navigation/tabs/tng-tabs.component.js +41 -0
- package/src/lib/navigation/tabs/tng-tabs.component.js.map +1 -0
- package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts +4 -0
- package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts.map +1 -0
- package/src/lib/navigation/toolbar/tng-toolbar.component.js +16 -0
- package/src/lib/navigation/toolbar/tng-toolbar.component.js.map +1 -0
- package/src/lib/overlay/dialog/tng-dialog.component.d.ts +43 -0
- package/src/lib/overlay/dialog/tng-dialog.component.d.ts.map +1 -0
- package/src/lib/overlay/dialog/tng-dialog.component.js +286 -0
- package/src/lib/overlay/dialog/tng-dialog.component.js.map +1 -0
- package/src/lib/overlay/index.d.ts +7 -0
- package/src/lib/overlay/index.d.ts.map +1 -0
- package/src/lib/overlay/index.js +7 -0
- package/src/lib/overlay/index.js.map +1 -0
- package/src/lib/overlay/popover/tng-popover.component.d.ts +28 -0
- package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -0
- package/src/lib/overlay/popover/tng-popover.component.js +133 -0
- package/src/lib/overlay/popover/tng-popover.component.js.map +1 -0
- package/src/lib/overlay/tng-overlay-runtime.d.ts +11 -0
- package/src/lib/overlay/tng-overlay-runtime.d.ts.map +1 -0
- package/src/lib/overlay/tng-overlay-runtime.js +11 -0
- package/src/lib/overlay/tng-overlay-runtime.js.map +1 -0
- package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts +31 -0
- package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -0
- package/src/lib/overlay/tooltip/tng-tooltip.component.js +111 -0
- package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -0
- package/src/lib/utility/avatar/tng-avatar.component.d.ts +19 -0
- package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -0
- package/src/lib/utility/avatar/tng-avatar.component.js +66 -0
- package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -0
- package/src/lib/utility/badge/tng-badge.component.d.ts +4 -0
- package/src/lib/utility/badge/tng-badge.component.d.ts.map +1 -0
- package/src/lib/utility/badge/tng-badge.component.js +13 -0
- package/src/lib/utility/badge/tng-badge.component.js.map +1 -0
- package/src/lib/utility/button/tng-button.component.d.ts +18 -0
- package/src/lib/utility/button/tng-button.component.d.ts.map +1 -0
- package/src/lib/utility/button/tng-button.component.js +32 -0
- package/src/lib/utility/button/tng-button.component.js.map +1 -0
- package/src/lib/utility/code-block/highlighting.d.ts +96 -0
- package/src/lib/utility/code-block/highlighting.d.ts.map +1 -0
- package/src/lib/utility/code-block/highlighting.js +220 -0
- package/src/lib/utility/code-block/highlighting.js.map +1 -0
- package/src/lib/utility/code-block/tng-code-block.component.d.ts +118 -0
- package/src/lib/utility/code-block/tng-code-block.component.d.ts.map +1 -0
- package/src/lib/utility/code-block/tng-code-block.component.js +586 -0
- package/src/lib/utility/code-block/tng-code-block.component.js.map +1 -0
- package/src/lib/utility/copy-button/tng-copy-button.component.d.ts +39 -0
- package/src/lib/utility/copy-button/tng-copy-button.component.d.ts.map +1 -0
- package/src/lib/utility/copy-button/tng-copy-button.component.js +127 -0
- package/src/lib/utility/copy-button/tng-copy-button.component.js.map +1 -0
- package/src/lib/utility/index.d.ts +17 -0
- package/src/lib/utility/index.d.ts.map +1 -0
- package/src/lib/utility/index.js +16 -0
- package/src/lib/utility/index.js.map +1 -0
- package/src/lib/utility/tag/tng-tag.component.d.ts +10 -0
- package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -0
- package/src/lib/utility/tag/tng-tag.component.js +18 -0
- package/src/lib/utility/tag/tng-tag.component.js.map +1 -0
- package/src/lib/utility/tree/tng-tree.component.d.ts +72 -0
- package/src/lib/utility/tree/tng-tree.component.d.ts.map +1 -0
- package/src/lib/utility/tree/tng-tree.component.js +336 -0
- package/src/lib/utility/tree/tng-tree.component.js.map +1 -0
- package/src/test-setup.d.ts +3 -0
- package/src/test-setup.d.ts.map +1 -0
- package/src/test-setup.js +10 -0
- package/src/test-setup.js.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img
|
|
3
|
+
src="https://raw.githubusercontent.com/tailng/tailng-ui/main/apps/tailng-ui/docs/src/assets/logo.svg"
|
|
4
|
+
width="96"
|
|
5
|
+
alt="TailNG logo"
|
|
6
|
+
/>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
# @tailng-ui/components
|
|
10
|
+
|
|
11
|
+
Owned, installable components built on top of `@tailng-ui/primitives`.
|
|
12
|
+
|
|
13
|
+
## TngButton
|
|
14
|
+
|
|
15
|
+
`TngButton` provides a styled wrapper over the `tngPress` primitive behavior.
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { Component } from '@angular/core';
|
|
19
|
+
import { TngButton } from '@tailng-ui/components';
|
|
20
|
+
|
|
21
|
+
@Component({
|
|
22
|
+
imports: [TngButton],
|
|
23
|
+
template: `<tng-button tone="success">Continue</tng-button>`,
|
|
24
|
+
})
|
|
25
|
+
export class ExampleComponent {}
|
|
26
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tailng-ui/components",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/core": "^21.1.0",
|
|
6
|
+
"@tailng-ui/cdk": "workspace:*",
|
|
7
|
+
"@tailng-ui/primitives": "workspace:*",
|
|
8
|
+
"tslib": "^2.3.0"
|
|
9
|
+
},
|
|
10
|
+
"sideEffects": false,
|
|
11
|
+
"types": "./src/index.d.ts",
|
|
12
|
+
"main": "./src/index.js",
|
|
13
|
+
"type": "commonjs"
|
|
14
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../libs/tailng-ui/components/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
|
package/src/index.js
ADDED
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/tailng-ui/components/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC","sourcesContent":["export * from './lib/navigation';\nexport * from './lib/form';\nexport * from './lib/layout';\nexport * from './lib/overlay';\nexport * from './lib/feedback';\nexport * from './lib/utility';\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type TngEmptyAlign = 'center' | 'start';
|
|
2
|
+
export declare class TngEmptyComponent {
|
|
3
|
+
readonly align: import("@angular/core").InputSignal<TngEmptyAlign>;
|
|
4
|
+
}
|
|
5
|
+
export declare class TngEmptyIconComponent {
|
|
6
|
+
}
|
|
7
|
+
export declare class TngEmptyTitleComponent {
|
|
8
|
+
}
|
|
9
|
+
export declare class TngEmptyDescriptionComponent {
|
|
10
|
+
}
|
|
11
|
+
export declare class TngEmptyActionsComponent {
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=tng-empty.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-empty.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/empty/tng-empty.component.ts"],"names":[],"mappings":"AASA,KAAK,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExC,qBAMa,iBAAiB;IAC5B,SAAgB,KAAK,qDAAkC;CACxD;AAED,qBAMa,qBAAqB;CAAG;AAErC,qBAMa,sBAAsB;CAAG;AAEtC,qBAMa,4BAA4B;CAAG;AAE5C,qBAMa,wBAAwB;CAAG"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, input } from '@angular/core';
|
|
3
|
+
import { TngEmpty as TngEmptyPrimitive, TngEmptyActions as TngEmptyActionsPrimitive, TngEmptyDescription as TngEmptyDescriptionPrimitive, TngEmptyIcon as TngEmptyIconPrimitive, TngEmptyTitle as TngEmptyTitlePrimitive, } from '@tailng-ui/primitives';
|
|
4
|
+
let TngEmptyComponent = class TngEmptyComponent {
|
|
5
|
+
align = input('center');
|
|
6
|
+
};
|
|
7
|
+
TngEmptyComponent = __decorate([
|
|
8
|
+
Component({
|
|
9
|
+
selector: 'tng-empty',
|
|
10
|
+
imports: [TngEmptyPrimitive],
|
|
11
|
+
templateUrl: './tng-empty.component.html',
|
|
12
|
+
styleUrl: './tng-empty.component.css',
|
|
13
|
+
})
|
|
14
|
+
], TngEmptyComponent);
|
|
15
|
+
export { TngEmptyComponent };
|
|
16
|
+
let TngEmptyIconComponent = class TngEmptyIconComponent {
|
|
17
|
+
};
|
|
18
|
+
TngEmptyIconComponent = __decorate([
|
|
19
|
+
Component({
|
|
20
|
+
selector: 'tng-empty-icon',
|
|
21
|
+
imports: [TngEmptyIconPrimitive],
|
|
22
|
+
templateUrl: './tng-empty-icon.component.html',
|
|
23
|
+
styleUrl: './tng-empty.component.css',
|
|
24
|
+
})
|
|
25
|
+
], TngEmptyIconComponent);
|
|
26
|
+
export { TngEmptyIconComponent };
|
|
27
|
+
let TngEmptyTitleComponent = class TngEmptyTitleComponent {
|
|
28
|
+
};
|
|
29
|
+
TngEmptyTitleComponent = __decorate([
|
|
30
|
+
Component({
|
|
31
|
+
selector: 'tng-empty-title',
|
|
32
|
+
imports: [TngEmptyTitlePrimitive],
|
|
33
|
+
templateUrl: './tng-empty-title.component.html',
|
|
34
|
+
styleUrl: './tng-empty.component.css',
|
|
35
|
+
})
|
|
36
|
+
], TngEmptyTitleComponent);
|
|
37
|
+
export { TngEmptyTitleComponent };
|
|
38
|
+
let TngEmptyDescriptionComponent = class TngEmptyDescriptionComponent {
|
|
39
|
+
};
|
|
40
|
+
TngEmptyDescriptionComponent = __decorate([
|
|
41
|
+
Component({
|
|
42
|
+
selector: 'tng-empty-description',
|
|
43
|
+
imports: [TngEmptyDescriptionPrimitive],
|
|
44
|
+
templateUrl: './tng-empty-description.component.html',
|
|
45
|
+
styleUrl: './tng-empty.component.css',
|
|
46
|
+
})
|
|
47
|
+
], TngEmptyDescriptionComponent);
|
|
48
|
+
export { TngEmptyDescriptionComponent };
|
|
49
|
+
let TngEmptyActionsComponent = class TngEmptyActionsComponent {
|
|
50
|
+
};
|
|
51
|
+
TngEmptyActionsComponent = __decorate([
|
|
52
|
+
Component({
|
|
53
|
+
selector: 'tng-empty-actions',
|
|
54
|
+
imports: [TngEmptyActionsPrimitive],
|
|
55
|
+
templateUrl: './tng-empty-actions.component.html',
|
|
56
|
+
styleUrl: './tng-empty.component.css',
|
|
57
|
+
})
|
|
58
|
+
], TngEmptyActionsComponent);
|
|
59
|
+
export { TngEmptyActionsComponent };
|
|
60
|
+
//# sourceMappingURL=tng-empty.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-empty.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/empty/tng-empty.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACL,QAAQ,IAAI,iBAAiB,EAC7B,eAAe,IAAI,wBAAwB,EAC3C,mBAAmB,IAAI,4BAA4B,EACnD,YAAY,IAAI,qBAAqB,EACrC,aAAa,IAAI,sBAAsB,GACxC,MAAM,uBAAuB,CAAC;AAUxB,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACZ,KAAK,GAAG,KAAK,CAAgB,QAAQ,CAAC,CAAC;CACxD,CAAA;AAFY,iBAAiB;IAN7B,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,iBAAiB,CAAC;QAC5B,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,iBAAiB,CAE7B;;AAQM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAAG,CAAA;AAAxB,qBAAqB;IANjC,SAAS,CAAC;QACT,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,qBAAqB,CAAC;QAChC,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,qBAAqB,CAAG;;AAQ9B,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;CAAG,CAAA;AAAzB,sBAAsB;IANlC,SAAS,CAAC;QACT,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,sBAAsB,CAAC;QACjC,WAAW,EAAE,kCAAkC;QAC/C,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,sBAAsB,CAAG;;AAQ/B,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;CAAG,CAAA;AAA/B,4BAA4B;IANxC,SAAS,CAAC;QACT,QAAQ,EAAE,uBAAuB;QACjC,OAAO,EAAE,CAAC,4BAA4B,CAAC;QACvC,WAAW,EAAE,wCAAwC;QACrD,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,4BAA4B,CAAG;;AAQrC,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;CAAG,CAAA;AAA3B,wBAAwB;IANpC,SAAS,CAAC;QACT,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,CAAC,wBAAwB,CAAC;QACnC,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,wBAAwB,CAAG","sourcesContent":["import { Component, input } from '@angular/core';\nimport {\n TngEmpty as TngEmptyPrimitive,\n TngEmptyActions as TngEmptyActionsPrimitive,\n TngEmptyDescription as TngEmptyDescriptionPrimitive,\n TngEmptyIcon as TngEmptyIconPrimitive,\n TngEmptyTitle as TngEmptyTitlePrimitive,\n} from '@tailng-ui/primitives';\n\ntype TngEmptyAlign = 'center' | 'start';\n\n@Component({\n selector: 'tng-empty',\n imports: [TngEmptyPrimitive],\n templateUrl: './tng-empty.component.html',\n styleUrl: './tng-empty.component.css',\n})\nexport class TngEmptyComponent {\n public readonly align = input<TngEmptyAlign>('center');\n}\n\n@Component({\n selector: 'tng-empty-icon',\n imports: [TngEmptyIconPrimitive],\n templateUrl: './tng-empty-icon.component.html',\n styleUrl: './tng-empty.component.css',\n})\nexport class TngEmptyIconComponent {}\n\n@Component({\n selector: 'tng-empty-title',\n imports: [TngEmptyTitlePrimitive],\n templateUrl: './tng-empty-title.component.html',\n styleUrl: './tng-empty.component.css',\n})\nexport class TngEmptyTitleComponent {}\n\n@Component({\n selector: 'tng-empty-description',\n imports: [TngEmptyDescriptionPrimitive],\n templateUrl: './tng-empty-description.component.html',\n styleUrl: './tng-empty.component.css',\n})\nexport class TngEmptyDescriptionComponent {}\n\n@Component({\n selector: 'tng-empty-actions',\n imports: [TngEmptyActionsPrimitive],\n templateUrl: './tng-empty-actions.component.html',\n styleUrl: './tng-empty.component.css',\n})\nexport class TngEmptyActionsComponent {}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './empty/tng-empty.component';
|
|
2
|
+
export { TngEmptyComponent as TngEmpty, TngEmptyIconComponent as TngEmptyIcon, TngEmptyTitleComponent as TngEmptyTitle, TngEmptyDescriptionComponent as TngEmptyDescription, TngEmptyActionsComponent as TngEmptyActions, } from './empty/tng-empty.component';
|
|
3
|
+
export * from './progress-bar/tng-progress-bar.component';
|
|
4
|
+
export { TngProgressBarComponent as TngProgressBar } from './progress-bar/tng-progress-bar.component';
|
|
5
|
+
export * from './progress-spinner/tng-progress-spinner.component';
|
|
6
|
+
export { TngProgressSpinnerComponent as TngProgressSpinner } from './progress-spinner/tng-progress-spinner.component';
|
|
7
|
+
export * from './skeleton/tng-skeleton.component';
|
|
8
|
+
export { TngSkeletonComponent as TngSkeleton } from './skeleton/tng-skeleton.component';
|
|
9
|
+
export * from './toast/tng-toast.component';
|
|
10
|
+
export { TngToastComponent as TngToast } from './toast/tng-toast.component';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/feedback/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,iBAAiB,IAAI,QAAQ,EAC7B,qBAAqB,IAAI,YAAY,EACrC,sBAAsB,IAAI,aAAa,EACvC,4BAA4B,IAAI,mBAAmB,EACnD,wBAAwB,IAAI,eAAe,GAC5C,MAAM,6BAA6B,CAAC;AACrC,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,uBAAuB,IAAI,cAAc,EAAE,MAAM,2CAA2C,CAAC;AACtG,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,2BAA2B,IAAI,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACtH,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,IAAI,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACxF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './empty/tng-empty.component';
|
|
2
|
+
export { TngEmptyComponent as TngEmpty, TngEmptyIconComponent as TngEmptyIcon, TngEmptyTitleComponent as TngEmptyTitle, TngEmptyDescriptionComponent as TngEmptyDescription, TngEmptyActionsComponent as TngEmptyActions, } from './empty/tng-empty.component';
|
|
3
|
+
export * from './progress-bar/tng-progress-bar.component';
|
|
4
|
+
export { TngProgressBarComponent as TngProgressBar } from './progress-bar/tng-progress-bar.component';
|
|
5
|
+
export * from './progress-spinner/tng-progress-spinner.component';
|
|
6
|
+
export { TngProgressSpinnerComponent as TngProgressSpinner } from './progress-spinner/tng-progress-spinner.component';
|
|
7
|
+
export * from './skeleton/tng-skeleton.component';
|
|
8
|
+
export { TngSkeletonComponent as TngSkeleton } from './skeleton/tng-skeleton.component';
|
|
9
|
+
export * from './toast/tng-toast.component';
|
|
10
|
+
export { TngToastComponent as TngToast } from './toast/tng-toast.component';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/feedback/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,iBAAiB,IAAI,QAAQ,EAC7B,qBAAqB,IAAI,YAAY,EACrC,sBAAsB,IAAI,aAAa,EACvC,4BAA4B,IAAI,mBAAmB,EACnD,wBAAwB,IAAI,eAAe,GAC5C,MAAM,6BAA6B,CAAC;AACrC,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,uBAAuB,IAAI,cAAc,EAAE,MAAM,2CAA2C,CAAC;AACtG,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,2BAA2B,IAAI,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACtH,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,IAAI,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACxF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["export * from './empty/tng-empty.component';\nexport {\n TngEmptyComponent as TngEmpty,\n TngEmptyIconComponent as TngEmptyIcon,\n TngEmptyTitleComponent as TngEmptyTitle,\n TngEmptyDescriptionComponent as TngEmptyDescription,\n TngEmptyActionsComponent as TngEmptyActions,\n} from './empty/tng-empty.component';\nexport * from './progress-bar/tng-progress-bar.component';\nexport { TngProgressBarComponent as TngProgressBar } from './progress-bar/tng-progress-bar.component';\nexport * from './progress-spinner/tng-progress-spinner.component';\nexport { TngProgressSpinnerComponent as TngProgressSpinner } from './progress-spinner/tng-progress-spinner.component';\nexport * from './skeleton/tng-skeleton.component';\nexport { TngSkeletonComponent as TngSkeleton } from './skeleton/tng-skeleton.component';\nexport * from './toast/tng-toast.component';\nexport { TngToastComponent as TngToast } from './toast/tng-toast.component';\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function toTngProgressBarPercent(min: number, max: number, value: number): number;
|
|
2
|
+
export declare class TngProgressBarComponent {
|
|
3
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
|
|
4
|
+
readonly indeterminate: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
5
|
+
readonly max: import("@angular/core").InputSignalWithTransform<number, string | number>;
|
|
6
|
+
readonly min: import("@angular/core").InputSignalWithTransform<number, string | number>;
|
|
7
|
+
readonly value: import("@angular/core").InputSignalWithTransform<number, string | number>;
|
|
8
|
+
protected readonly indicatorPercent: import("@angular/core").Signal<number>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=tng-progress-bar.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-progress-bar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/progress-bar/tng-progress-bar.component.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQvF;AAED,qBAMa,uBAAuB;IAClC,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,KAAK,4EAGlB;IAEH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,yCAEjC;CACH"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { booleanAttribute, Component, computed, input } from '@angular/core';
|
|
3
|
+
import { normalizeTngProgressBarMax, normalizeTngProgressBarMin, resolveTngProgressBarRange, TngProgressBar as TngProgressBarPrimitive, TngProgressBarIndicator, } from '@tailng-ui/primitives';
|
|
4
|
+
export function toTngProgressBarPercent(min, max, value) {
|
|
5
|
+
const range = resolveTngProgressBarRange(min, max, value);
|
|
6
|
+
const denominator = range.max - range.min;
|
|
7
|
+
if (denominator <= 0) {
|
|
8
|
+
return 100;
|
|
9
|
+
}
|
|
10
|
+
return ((range.value - range.min) / denominator) * 100;
|
|
11
|
+
}
|
|
12
|
+
let TngProgressBarComponent = class TngProgressBarComponent {
|
|
13
|
+
ariaLabel = input(null);
|
|
14
|
+
indeterminate = input(false, {
|
|
15
|
+
transform: booleanAttribute,
|
|
16
|
+
});
|
|
17
|
+
max = input(100, {
|
|
18
|
+
transform: (value) => normalizeTngProgressBarMax(typeof value === 'number' ? value : Number(value)),
|
|
19
|
+
});
|
|
20
|
+
min = input(0, {
|
|
21
|
+
transform: (value) => normalizeTngProgressBarMin(typeof value === 'number' ? value : Number(value)),
|
|
22
|
+
});
|
|
23
|
+
value = input(0, {
|
|
24
|
+
transform: (value) => typeof value === 'number' ? value : Number(value),
|
|
25
|
+
});
|
|
26
|
+
indicatorPercent = computed(() => toTngProgressBarPercent(this.min(), this.max(), this.value()));
|
|
27
|
+
};
|
|
28
|
+
TngProgressBarComponent = __decorate([
|
|
29
|
+
Component({
|
|
30
|
+
selector: 'tng-progress-bar',
|
|
31
|
+
imports: [TngProgressBarPrimitive, TngProgressBarIndicator],
|
|
32
|
+
templateUrl: './tng-progress-bar.component.html',
|
|
33
|
+
styleUrl: './tng-progress-bar.component.css',
|
|
34
|
+
})
|
|
35
|
+
], TngProgressBarComponent);
|
|
36
|
+
export { TngProgressBarComponent };
|
|
37
|
+
//# sourceMappingURL=tng-progress-bar.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-progress-bar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/progress-bar/tng-progress-bar.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,cAAc,IAAI,uBAAuB,EACzC,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,UAAU,uBAAuB,CAAC,GAAW,EAAE,GAAW,EAAE,KAAa;IAC7E,MAAM,KAAK,GAAG,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1C,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC;AACzD,CAAC;AAQM,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClB,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACvC,aAAa,GAAG,KAAK,CAA4B,KAAK,EAAE;QACtE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,GAAG,GAAG,KAAK,CAA0B,GAAG,EAAE;QACxD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,0BAA0B,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAChF,CAAC,CAAC;IACa,GAAG,GAAG,KAAK,CAA0B,CAAC,EAAE;QACtD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,0BAA0B,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAChF,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAA0B,CAAC,EAAE;QACxD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KACpD,CAAC,CAAC;IAEgB,gBAAgB,GAAG,QAAQ,CAAS,GAAG,EAAE,CAC1D,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAC9D,CAAC;CACH,CAAA;AArBY,uBAAuB;IANnC,SAAS,CAAC;QACT,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;QAC3D,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,kCAAkC;KAC7C,CAAC;GACW,uBAAuB,CAqBnC","sourcesContent":["import { booleanAttribute, Component, computed, input } from '@angular/core';\nimport {\n normalizeTngProgressBarMax,\n normalizeTngProgressBarMin,\n resolveTngProgressBarRange,\n TngProgressBar as TngProgressBarPrimitive,\n TngProgressBarIndicator,\n} from '@tailng-ui/primitives';\n\nexport function toTngProgressBarPercent(min: number, max: number, value: number): number {\n const range = resolveTngProgressBarRange(min, max, value);\n const denominator = range.max - range.min;\n if (denominator <= 0) {\n return 100;\n }\n\n return ((range.value - range.min) / denominator) * 100;\n}\n\n@Component({\n selector: 'tng-progress-bar',\n imports: [TngProgressBarPrimitive, TngProgressBarIndicator],\n templateUrl: './tng-progress-bar.component.html',\n styleUrl: './tng-progress-bar.component.css',\n})\nexport class TngProgressBarComponent {\n public readonly ariaLabel = input<string | null>(null);\n public readonly indeterminate = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly max = input<number, number | string>(100, {\n transform: (value: number | string): number =>\n normalizeTngProgressBarMax(typeof value === 'number' ? value : Number(value)),\n });\n public readonly min = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n normalizeTngProgressBarMin(typeof value === 'number' ? value : Number(value)),\n });\n public readonly value = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n typeof value === 'number' ? value : Number(value),\n });\n\n protected readonly indicatorPercent = computed<number>(() =>\n toTngProgressBarPercent(this.min(), this.max(), this.value()),\n );\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function toTngProgressSpinnerPercent(min: number, max: number, value: number): number;
|
|
2
|
+
export declare function toTngProgressSpinnerDashOffset(percent: number): number;
|
|
3
|
+
export declare class TngProgressSpinnerComponent {
|
|
4
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
|
|
5
|
+
readonly indeterminate: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
6
|
+
readonly max: import("@angular/core").InputSignalWithTransform<number, string | number>;
|
|
7
|
+
readonly min: import("@angular/core").InputSignalWithTransform<number, string | number>;
|
|
8
|
+
readonly size: import("@angular/core").InputSignalWithTransform<number, string | number>;
|
|
9
|
+
readonly strokeWidth: import("@angular/core").InputSignalWithTransform<number, string | number>;
|
|
10
|
+
readonly value: import("@angular/core").InputSignalWithTransform<number, string | number>;
|
|
11
|
+
protected readonly circumference: number;
|
|
12
|
+
protected readonly dashOffset: import("@angular/core").Signal<number>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=tng-progress-spinner.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-progress-spinner.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/progress-spinner/tng-progress-spinner.component.ts"],"names":[],"mappings":"AAmBA,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ3F;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,qBAMa,2BAA2B;IACtC,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,IAAI,4EAGjB;IACH,SAAgB,WAAW,4EAGxB;IACH,SAAgB,KAAK,4EAGlB;IAEH,SAAS,CAAC,QAAQ,CAAC,aAAa,SAAwB;IACxD,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAI3B;CACH"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { booleanAttribute, Component, computed, input } from '@angular/core';
|
|
3
|
+
import { normalizeTngProgressSpinnerMax, normalizeTngProgressSpinnerMin, resolveTngProgressSpinnerRange, TngProgressSpinner as TngProgressSpinnerPrimitive, } from '@tailng-ui/primitives';
|
|
4
|
+
const spinnerRadius = 18;
|
|
5
|
+
const spinnerCircumference = 2 * Math.PI * spinnerRadius;
|
|
6
|
+
function normalizePositiveNumber(value, fallback) {
|
|
7
|
+
if (!Number.isFinite(value)) {
|
|
8
|
+
return fallback;
|
|
9
|
+
}
|
|
10
|
+
return value > 0 ? value : fallback;
|
|
11
|
+
}
|
|
12
|
+
export function toTngProgressSpinnerPercent(min, max, value) {
|
|
13
|
+
const range = resolveTngProgressSpinnerRange(min, max, value);
|
|
14
|
+
const denominator = range.max - range.min;
|
|
15
|
+
if (denominator <= 0) {
|
|
16
|
+
return 100;
|
|
17
|
+
}
|
|
18
|
+
return ((range.value - range.min) / denominator) * 100;
|
|
19
|
+
}
|
|
20
|
+
export function toTngProgressSpinnerDashOffset(percent) {
|
|
21
|
+
return spinnerCircumference - (spinnerCircumference * percent) / 100;
|
|
22
|
+
}
|
|
23
|
+
let TngProgressSpinnerComponent = class TngProgressSpinnerComponent {
|
|
24
|
+
ariaLabel = input(null);
|
|
25
|
+
indeterminate = input(false, {
|
|
26
|
+
transform: booleanAttribute,
|
|
27
|
+
});
|
|
28
|
+
max = input(100, {
|
|
29
|
+
transform: (value) => normalizeTngProgressSpinnerMax(typeof value === 'number' ? value : Number(value)),
|
|
30
|
+
});
|
|
31
|
+
min = input(0, {
|
|
32
|
+
transform: (value) => normalizeTngProgressSpinnerMin(typeof value === 'number' ? value : Number(value)),
|
|
33
|
+
});
|
|
34
|
+
size = input(40, {
|
|
35
|
+
transform: (value) => normalizePositiveNumber(typeof value === 'number' ? value : Number(value), 40),
|
|
36
|
+
});
|
|
37
|
+
strokeWidth = input(4, {
|
|
38
|
+
transform: (value) => normalizePositiveNumber(typeof value === 'number' ? value : Number(value), 4),
|
|
39
|
+
});
|
|
40
|
+
value = input(0, {
|
|
41
|
+
transform: (value) => typeof value === 'number' ? value : Number(value),
|
|
42
|
+
});
|
|
43
|
+
circumference = spinnerCircumference;
|
|
44
|
+
dashOffset = computed(() => toTngProgressSpinnerDashOffset(toTngProgressSpinnerPercent(this.min(), this.max(), this.value())));
|
|
45
|
+
};
|
|
46
|
+
TngProgressSpinnerComponent = __decorate([
|
|
47
|
+
Component({
|
|
48
|
+
selector: 'tng-progress-spinner',
|
|
49
|
+
imports: [TngProgressSpinnerPrimitive],
|
|
50
|
+
templateUrl: './tng-progress-spinner.component.html',
|
|
51
|
+
styleUrl: './tng-progress-spinner.component.css',
|
|
52
|
+
})
|
|
53
|
+
], TngProgressSpinnerComponent);
|
|
54
|
+
export { TngProgressSpinnerComponent };
|
|
55
|
+
//# sourceMappingURL=tng-progress-spinner.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-progress-spinner.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/progress-spinner/tng-progress-spinner.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,8BAA8B,EAC9B,kBAAkB,IAAI,2BAA2B,GAClD,MAAM,uBAAuB,CAAC;AAE/B,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC;AAEzD,SAAS,uBAAuB,CAAC,KAAa,EAAE,QAAgB;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW,EAAE,GAAW,EAAE,KAAa;IACjF,MAAM,KAAK,GAAG,8BAA8B,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1C,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,OAAe;IAC5D,OAAO,oBAAoB,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;AACvE,CAAC;AAQM,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtB,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACvC,aAAa,GAAG,KAAK,CAA4B,KAAK,EAAE;QACtE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,GAAG,GAAG,KAAK,CAA0B,GAAG,EAAE;QACxD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,8BAA8B,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpF,CAAC,CAAC;IACa,GAAG,GAAG,KAAK,CAA0B,CAAC,EAAE;QACtD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,8BAA8B,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpF,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAA0B,EAAE,EAAE;QACxD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,uBAAuB,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;KACjF,CAAC,CAAC;IACa,WAAW,GAAG,KAAK,CAA0B,CAAC,EAAE;QAC9D,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,uBAAuB,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KAChF,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAA0B,CAAC,EAAE;QACxD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KACpD,CAAC,CAAC;IAEgB,aAAa,GAAG,oBAAoB,CAAC;IACrC,UAAU,GAAG,QAAQ,CAAS,GAAG,EAAE,CACpD,8BAA8B,CAC5B,2BAA2B,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAClE,CACF,CAAC;CACH,CAAA;AAhCY,2BAA2B;IANvC,SAAS,CAAC;QACT,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,CAAC,2BAA2B,CAAC;QACtC,WAAW,EAAE,uCAAuC;QACpD,QAAQ,EAAE,sCAAsC;KACjD,CAAC;GACW,2BAA2B,CAgCvC","sourcesContent":["import { booleanAttribute, Component, computed, input } from '@angular/core';\nimport {\n normalizeTngProgressSpinnerMax,\n normalizeTngProgressSpinnerMin,\n resolveTngProgressSpinnerRange,\n TngProgressSpinner as TngProgressSpinnerPrimitive,\n} from '@tailng-ui/primitives';\n\nconst spinnerRadius = 18;\nconst spinnerCircumference = 2 * Math.PI * spinnerRadius;\n\nfunction normalizePositiveNumber(value: number, fallback: number): number {\n if (!Number.isFinite(value)) {\n return fallback;\n }\n\n return value > 0 ? value : fallback;\n}\n\nexport function toTngProgressSpinnerPercent(min: number, max: number, value: number): number {\n const range = resolveTngProgressSpinnerRange(min, max, value);\n const denominator = range.max - range.min;\n if (denominator <= 0) {\n return 100;\n }\n\n return ((range.value - range.min) / denominator) * 100;\n}\n\nexport function toTngProgressSpinnerDashOffset(percent: number): number {\n return spinnerCircumference - (spinnerCircumference * percent) / 100;\n}\n\n@Component({\n selector: 'tng-progress-spinner',\n imports: [TngProgressSpinnerPrimitive],\n templateUrl: './tng-progress-spinner.component.html',\n styleUrl: './tng-progress-spinner.component.css',\n})\nexport class TngProgressSpinnerComponent {\n public readonly ariaLabel = input<string | null>(null);\n public readonly indeterminate = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly max = input<number, number | string>(100, {\n transform: (value: number | string): number =>\n normalizeTngProgressSpinnerMax(typeof value === 'number' ? value : Number(value)),\n });\n public readonly min = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n normalizeTngProgressSpinnerMin(typeof value === 'number' ? value : Number(value)),\n });\n public readonly size = input<number, number | string>(40, {\n transform: (value: number | string): number =>\n normalizePositiveNumber(typeof value === 'number' ? value : Number(value), 40),\n });\n public readonly strokeWidth = input<number, number | string>(4, {\n transform: (value: number | string): number =>\n normalizePositiveNumber(typeof value === 'number' ? value : Number(value), 4),\n });\n public readonly value = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n typeof value === 'number' ? value : Number(value),\n });\n\n protected readonly circumference = spinnerCircumference;\n protected readonly dashOffset = computed<number>(() =>\n toTngProgressSpinnerDashOffset(\n toTngProgressSpinnerPercent(this.min(), this.max(), this.value()),\n ),\n );\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function resolveTngSkeletonCssSize(value: string, fallback: string): string;
|
|
2
|
+
export declare class TngSkeletonComponent {
|
|
3
|
+
readonly animated: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
4
|
+
readonly height: import("@angular/core").InputSignal<string>;
|
|
5
|
+
readonly rounded: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
6
|
+
readonly width: import("@angular/core").InputSignal<string>;
|
|
7
|
+
resolveHeight(): string;
|
|
8
|
+
resolveWidth(): string;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=tng-skeleton.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-skeleton.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/skeleton/tng-skeleton.component.ts"],"names":[],"mappings":"AAGA,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGjF;AAED,qBAMa,oBAAoB;IAC/B,SAAgB,QAAQ,8EAErB;IACH,SAAgB,MAAM,8CAAyB;IAC/C,SAAgB,OAAO,8EAEpB;IACH,SAAgB,KAAK,8CAAyB;IAEvC,aAAa,IAAI,MAAM;IAIvB,YAAY,IAAI,MAAM;CAG9B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { booleanAttribute, Component, input } from '@angular/core';
|
|
3
|
+
import { TngSkeleton as TngSkeletonPrimitive } from '@tailng-ui/primitives';
|
|
4
|
+
export function resolveTngSkeletonCssSize(value, fallback) {
|
|
5
|
+
const normalizedValue = value.trim();
|
|
6
|
+
return normalizedValue.length > 0 ? normalizedValue : fallback;
|
|
7
|
+
}
|
|
8
|
+
let TngSkeletonComponent = class TngSkeletonComponent {
|
|
9
|
+
animated = input(true, {
|
|
10
|
+
transform: booleanAttribute,
|
|
11
|
+
});
|
|
12
|
+
height = input('1rem');
|
|
13
|
+
rounded = input(true, {
|
|
14
|
+
transform: booleanAttribute,
|
|
15
|
+
});
|
|
16
|
+
width = input('100%');
|
|
17
|
+
resolveHeight() {
|
|
18
|
+
return resolveTngSkeletonCssSize(this.height(), '1rem');
|
|
19
|
+
}
|
|
20
|
+
resolveWidth() {
|
|
21
|
+
return resolveTngSkeletonCssSize(this.width(), '100%');
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
TngSkeletonComponent = __decorate([
|
|
25
|
+
Component({
|
|
26
|
+
selector: 'tng-skeleton',
|
|
27
|
+
imports: [TngSkeletonPrimitive],
|
|
28
|
+
templateUrl: './tng-skeleton.component.html',
|
|
29
|
+
styleUrl: './tng-skeleton.component.css',
|
|
30
|
+
})
|
|
31
|
+
], TngSkeletonComponent);
|
|
32
|
+
export { TngSkeletonComponent };
|
|
33
|
+
//# sourceMappingURL=tng-skeleton.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-skeleton.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/skeleton/tng-skeleton.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,UAAU,yBAAyB,CAAC,KAAa,EAAE,QAAgB;IACvE,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjE,CAAC;AAQM,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACf,QAAQ,GAAG,KAAK,CAA4B,IAAI,EAAE;QAChE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,MAAM,GAAG,KAAK,CAAS,MAAM,CAAC,CAAC;IAC/B,OAAO,GAAG,KAAK,CAA4B,IAAI,EAAE;QAC/D,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,MAAM,CAAC,CAAC;IAEvC,aAAa;QAClB,OAAO,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAEM,YAAY;QACjB,OAAO,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;CACF,CAAA;AAjBY,oBAAoB;IANhC,SAAS,CAAC;QACT,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,WAAW,EAAE,+BAA+B;QAC5C,QAAQ,EAAE,8BAA8B;KACzC,CAAC;GACW,oBAAoB,CAiBhC","sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\nimport { TngSkeleton as TngSkeletonPrimitive } from '@tailng-ui/primitives';\n\nexport function resolveTngSkeletonCssSize(value: string, fallback: string): string {\n const normalizedValue = value.trim();\n return normalizedValue.length > 0 ? normalizedValue : fallback;\n}\n\n@Component({\n selector: 'tng-skeleton',\n imports: [TngSkeletonPrimitive],\n templateUrl: './tng-skeleton.component.html',\n styleUrl: './tng-skeleton.component.css',\n})\nexport class TngSkeletonComponent {\n public readonly animated = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly height = input<string>('1rem');\n public readonly rounded = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly width = input<string>('100%');\n\n public resolveHeight(): string {\n return resolveTngSkeletonCssSize(this.height(), '1rem');\n }\n\n public resolveWidth(): string {\n return resolveTngSkeletonCssSize(this.width(), '100%');\n }\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { OnDestroy } from '@angular/core';
|
|
2
|
+
import type { TngToastTone } from '@tailng-ui/primitives';
|
|
3
|
+
export type TngToastMode = 'snackbar' | 'toast';
|
|
4
|
+
export type TngToastPosition = 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
|
|
5
|
+
export type TngToastOptions = Readonly<Partial<{
|
|
6
|
+
duration: number;
|
|
7
|
+
title: string | null;
|
|
8
|
+
tone: TngToastTone;
|
|
9
|
+
}>>;
|
|
10
|
+
type TngToastKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key'>> & Readonly<{
|
|
11
|
+
preventDefault: () => void;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function normalizeTngToastDuration(value: number, fallback: number): number;
|
|
14
|
+
export declare function normalizeTngToastMaxVisible(value: number): number;
|
|
15
|
+
export declare function resolveTngToastNextSlice<TValue>(values: readonly TValue[], maxVisible: number): readonly TValue[];
|
|
16
|
+
export declare function shouldDismissTngToastForKey(key: string): boolean;
|
|
17
|
+
export declare class TngToastComponent implements OnDestroy {
|
|
18
|
+
private sequence;
|
|
19
|
+
private readonly timeoutByToastId;
|
|
20
|
+
readonly duration: import("@angular/core").InputSignal<number>;
|
|
21
|
+
readonly maxVisible: import("@angular/core").InputSignal<number>;
|
|
22
|
+
readonly mode: import("@angular/core").InputSignal<TngToastMode>;
|
|
23
|
+
readonly position: import("@angular/core").InputSignal<TngToastPosition>;
|
|
24
|
+
readonly dismissed: import("@angular/core").OutputEmitterRef<string>;
|
|
25
|
+
protected readonly toasts: import("@angular/core").WritableSignal<readonly Readonly<{
|
|
26
|
+
duration: number;
|
|
27
|
+
id: string;
|
|
28
|
+
message: string;
|
|
29
|
+
title: string | null;
|
|
30
|
+
tone: TngToastTone;
|
|
31
|
+
}>[]>;
|
|
32
|
+
dismiss(id: string): void;
|
|
33
|
+
ngOnDestroy(): void;
|
|
34
|
+
show(message: string, options?: TngToastOptions): string;
|
|
35
|
+
protected onToastKeydown(id: string, event: TngToastKeyboardEvent): void;
|
|
36
|
+
private clearDismissTimer;
|
|
37
|
+
private scheduleDismiss;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=tng-toast.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-toast.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/toast/tng-toast.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAM1D,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAChD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzF,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,OAAO,CAAC;IACN,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC,CACH,CAAC;AAEF,KAAK,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,GAC/D,QAAQ,CAAC;IAAE,cAAc,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAAC;AAU3C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMjF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAC7C,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,UAAU,EAAE,MAAM,GACjB,SAAS,MAAM,EAAE,CAMnB;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,qBAMa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoD;IAErF,SAAgB,QAAQ,8CAAuB;IAC/C,SAAgB,UAAU,8CAAoB;IAC9C,SAAgB,IAAI,oDAAgC;IACpD,SAAgB,QAAQ,wDAA2C;IAEnE,SAAgB,SAAS,mDAAoB;IAC7C,SAAS,CAAC,QAAQ,CAAC,MAAM;kBAtDf,MAAM;YACZ,MAAM;iBACD,MAAM;eACR,MAAM,GAAG,IAAI;cACd,YAAY;UAkDgD;IAE3D,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAYzB,WAAW,IAAI,IAAI;IAQnB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM;IAgCnE,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI;IASxE,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;CAaxB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, input, output, signal } from '@angular/core';
|
|
3
|
+
import { TngToastItem as TngToastItemPrimitive, TngToastViewport as TngToastViewportPrimitive, } from '@tailng-ui/primitives';
|
|
4
|
+
export function normalizeTngToastDuration(value, fallback) {
|
|
5
|
+
if (!Number.isFinite(value) || value < 0) {
|
|
6
|
+
return fallback;
|
|
7
|
+
}
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
export function normalizeTngToastMaxVisible(value) {
|
|
11
|
+
if (!Number.isFinite(value) || value < 1) {
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
14
|
+
return Math.floor(value);
|
|
15
|
+
}
|
|
16
|
+
export function resolveTngToastNextSlice(values, maxVisible) {
|
|
17
|
+
if (values.length <= maxVisible) {
|
|
18
|
+
return values;
|
|
19
|
+
}
|
|
20
|
+
return values.slice(values.length - maxVisible);
|
|
21
|
+
}
|
|
22
|
+
export function shouldDismissTngToastForKey(key) {
|
|
23
|
+
return key === 'Escape';
|
|
24
|
+
}
|
|
25
|
+
let TngToastComponent = class TngToastComponent {
|
|
26
|
+
sequence = 0;
|
|
27
|
+
timeoutByToastId = new Map();
|
|
28
|
+
duration = input(4000);
|
|
29
|
+
maxVisible = input(4);
|
|
30
|
+
mode = input('toast');
|
|
31
|
+
position = input('bottom-right');
|
|
32
|
+
dismissed = output();
|
|
33
|
+
toasts = signal([]);
|
|
34
|
+
dismiss(id) {
|
|
35
|
+
const currentToasts = this.toasts();
|
|
36
|
+
const nextToasts = currentToasts.filter((toast) => toast.id !== id);
|
|
37
|
+
if (nextToasts.length === currentToasts.length) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this.clearDismissTimer(id);
|
|
41
|
+
this.toasts.set(nextToasts);
|
|
42
|
+
this.dismissed.emit(id);
|
|
43
|
+
}
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
for (const timeoutId of this.timeoutByToastId.values()) {
|
|
46
|
+
clearTimeout(timeoutId);
|
|
47
|
+
}
|
|
48
|
+
this.timeoutByToastId.clear();
|
|
49
|
+
}
|
|
50
|
+
show(message, options = {}) {
|
|
51
|
+
this.sequence += 1;
|
|
52
|
+
const id = `tng-toast-${this.sequence}`;
|
|
53
|
+
const fallbackDuration = this.duration();
|
|
54
|
+
const resolvedDuration = normalizeTngToastDuration(options.duration ?? fallbackDuration, fallbackDuration);
|
|
55
|
+
const nextToast = {
|
|
56
|
+
duration: resolvedDuration,
|
|
57
|
+
id,
|
|
58
|
+
message,
|
|
59
|
+
title: options.title ?? null,
|
|
60
|
+
tone: options.tone ?? 'neutral',
|
|
61
|
+
};
|
|
62
|
+
const previousToasts = this.toasts();
|
|
63
|
+
const visibleLimit = normalizeTngToastMaxVisible(this.maxVisible());
|
|
64
|
+
const nextToasts = resolveTngToastNextSlice([...previousToasts, nextToast], visibleLimit);
|
|
65
|
+
const nextIds = new Set(nextToasts.map((toast) => toast.id));
|
|
66
|
+
for (const previousToast of previousToasts) {
|
|
67
|
+
if (!nextIds.has(previousToast.id)) {
|
|
68
|
+
this.clearDismissTimer(previousToast.id);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
this.toasts.set(nextToasts);
|
|
72
|
+
this.scheduleDismiss(nextToast);
|
|
73
|
+
return id;
|
|
74
|
+
}
|
|
75
|
+
onToastKeydown(id, event) {
|
|
76
|
+
if (!shouldDismissTngToastForKey(event.key)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
this.dismiss(id);
|
|
81
|
+
}
|
|
82
|
+
clearDismissTimer(id) {
|
|
83
|
+
const timeoutId = this.timeoutByToastId.get(id);
|
|
84
|
+
if (timeoutId === undefined) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
clearTimeout(timeoutId);
|
|
88
|
+
this.timeoutByToastId.delete(id);
|
|
89
|
+
}
|
|
90
|
+
scheduleDismiss(toast) {
|
|
91
|
+
this.clearDismissTimer(toast.id);
|
|
92
|
+
if (toast.duration === 0) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const timeoutId = setTimeout(() => {
|
|
96
|
+
this.timeoutByToastId.delete(toast.id);
|
|
97
|
+
this.dismiss(toast.id);
|
|
98
|
+
}, toast.duration);
|
|
99
|
+
this.timeoutByToastId.set(toast.id, timeoutId);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
TngToastComponent = __decorate([
|
|
103
|
+
Component({
|
|
104
|
+
selector: 'tng-toast',
|
|
105
|
+
imports: [TngToastItemPrimitive, TngToastViewportPrimitive],
|
|
106
|
+
templateUrl: './tng-toast.component.html',
|
|
107
|
+
styleUrl: './tng-toast.component.css',
|
|
108
|
+
})
|
|
109
|
+
], TngToastComponent);
|
|
110
|
+
export { TngToastComponent };
|
|
111
|
+
//# sourceMappingURL=tng-toast.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-toast.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/feedback/toast/tng-toast.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, input, output, signal } from '@angular/core';\nimport type { OnDestroy } from '@angular/core';\nimport type { TngToastTone } from '@tailng-ui/primitives';\nimport {\n TngToastItem as TngToastItemPrimitive,\n TngToastViewport as TngToastViewportPrimitive,\n} from '@tailng-ui/primitives';\n\nexport type TngToastMode = 'snackbar' | 'toast';\nexport type TngToastPosition = 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n\nexport type TngToastOptions = Readonly<\n Partial<{\n duration: number;\n title: string | null;\n tone: TngToastTone;\n }>\n>;\n\ntype TngToastKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key'>> &\n Readonly<{ preventDefault: () => void }>;\n\ntype TngToastRecord = Readonly<{\n duration: number;\n id: string;\n message: string;\n title: string | null;\n tone: TngToastTone;\n}>;\n\nexport function normalizeTngToastDuration(value: number, fallback: number): number {\n if (!Number.isFinite(value) || value < 0) {\n return fallback;\n }\n\n return value;\n}\n\nexport function normalizeTngToastMaxVisible(value: number): number {\n if (!Number.isFinite(value) || value < 1) {\n return 1;\n }\n\n return Math.floor(value);\n}\n\nexport function resolveTngToastNextSlice<TValue>(\n values: readonly TValue[],\n maxVisible: number,\n): readonly TValue[] {\n if (values.length <= maxVisible) {\n return values;\n }\n\n return values.slice(values.length - maxVisible);\n}\n\nexport function shouldDismissTngToastForKey(key: string): boolean {\n return key === 'Escape';\n}\n\n@Component({\n selector: 'tng-toast',\n imports: [TngToastItemPrimitive, TngToastViewportPrimitive],\n templateUrl: './tng-toast.component.html',\n styleUrl: './tng-toast.component.css',\n})\nexport class TngToastComponent implements OnDestroy {\n private sequence = 0;\n private readonly timeoutByToastId = new Map<string, ReturnType<typeof setTimeout>>();\n\n public readonly duration = input<number>(4000);\n public readonly maxVisible = input<number>(4);\n public readonly mode = input<TngToastMode>('toast');\n public readonly position = input<TngToastPosition>('bottom-right');\n\n public readonly dismissed = output<string>();\n protected readonly toasts = signal<readonly TngToastRecord[]>([]);\n\n public dismiss(id: string): void {\n const currentToasts = this.toasts();\n const nextToasts = currentToasts.filter((toast) => toast.id !== id);\n if (nextToasts.length === currentToasts.length) {\n return;\n }\n\n this.clearDismissTimer(id);\n this.toasts.set(nextToasts);\n this.dismissed.emit(id);\n }\n\n public ngOnDestroy(): void {\n for (const timeoutId of this.timeoutByToastId.values()) {\n clearTimeout(timeoutId);\n }\n\n this.timeoutByToastId.clear();\n }\n\n public show(message: string, options: TngToastOptions = {}): string {\n this.sequence += 1;\n const id = `tng-toast-${this.sequence}`;\n const fallbackDuration = this.duration();\n const resolvedDuration = normalizeTngToastDuration(\n options.duration ?? fallbackDuration,\n fallbackDuration,\n );\n const nextToast: TngToastRecord = {\n duration: resolvedDuration,\n id,\n message,\n title: options.title ?? null,\n tone: options.tone ?? 'neutral',\n };\n\n const previousToasts = this.toasts();\n const visibleLimit = normalizeTngToastMaxVisible(this.maxVisible());\n const nextToasts = resolveTngToastNextSlice([...previousToasts, nextToast], visibleLimit);\n const nextIds = new Set(nextToasts.map((toast) => toast.id));\n\n for (const previousToast of previousToasts) {\n if (!nextIds.has(previousToast.id)) {\n this.clearDismissTimer(previousToast.id);\n }\n }\n\n this.toasts.set(nextToasts);\n this.scheduleDismiss(nextToast);\n return id;\n }\n\n protected onToastKeydown(id: string, event: TngToastKeyboardEvent): void {\n if (!shouldDismissTngToastForKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n this.dismiss(id);\n }\n\n private clearDismissTimer(id: string): void {\n const timeoutId = this.timeoutByToastId.get(id);\n if (timeoutId === undefined) {\n return;\n }\n\n clearTimeout(timeoutId);\n this.timeoutByToastId.delete(id);\n }\n\n private scheduleDismiss(toast: TngToastRecord): void {\n this.clearDismissTimer(toast.id);\n if (toast.duration === 0) {\n return;\n }\n\n const timeoutId = setTimeout(() => {\n this.timeoutByToastId.delete(toast.id);\n this.dismiss(toast.id);\n }, toast.duration);\n\n this.timeoutByToastId.set(toast.id, timeoutId);\n }\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TngAutocomplete } from '@tailng-ui/primitives';
|
|
2
|
+
export type TngAutocompleteGetValue<O, V> = (opt: O) => V;
|
|
3
|
+
export type TngAutocompleteGetLabel<O> = (opt: O) => string;
|
|
4
|
+
export type TngAutocompleteIsDisabled<O> = (opt: O) => boolean;
|
|
5
|
+
export type TngAutocompleteTrackBy<O> = (index: number, opt: O) => unknown;
|
|
6
|
+
export declare class TngAutocompleteComponent<O = unknown, V = unknown> {
|
|
7
|
+
protected readonly primitive: TngAutocomplete<V>;
|
|
8
|
+
readonly options: import("@angular/core").InputSignal<readonly O[]>;
|
|
9
|
+
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
10
|
+
readonly getOptionValue: import("@angular/core").InputSignal<TngAutocompleteGetValue<O, V>>;
|
|
11
|
+
readonly getOptionLabel: import("@angular/core").InputSignal<TngAutocompleteGetLabel<O>>;
|
|
12
|
+
readonly isOptionDisabled: import("@angular/core").InputSignal<TngAutocompleteIsDisabled<O>>;
|
|
13
|
+
/** Default: track by value, id, or option (stable identity for async/replaced options). */
|
|
14
|
+
readonly trackBy: import("@angular/core").InputSignal<TngAutocompleteTrackBy<O>>;
|
|
15
|
+
readonly iconText: import("@angular/core").InputSignal<string>;
|
|
16
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
17
|
+
protected readonly query: import("@angular/core").WritableSignal<string>;
|
|
18
|
+
constructor();
|
|
19
|
+
protected readonly selectedOption: import("@angular/core").Signal<O | null>;
|
|
20
|
+
protected readonly selectedLabel: import("@angular/core").Signal<string>;
|
|
21
|
+
protected readonly filteredOptions: import("@angular/core").Signal<readonly O[]>;
|
|
22
|
+
protected readonly displayText: import("@angular/core").Signal<string>;
|
|
23
|
+
protected onInput(ev: Event): void;
|
|
24
|
+
private findOption;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=tng-autocomplete.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/autocomplete/tng-autocomplete.component.ts"],"names":[],"mappings":"AASA,OAAO,EACL,eAAe,EAQhB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1D,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AAC5D,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAC/D,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAE3E,qBA+Ba,wBAAwB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAC5D,SAAS,CAAC,QAAQ,CAAC,SAAS,qBAA+C;IAE3E,QAAQ,CAAC,OAAO,oDAA2B;IAC3C,QAAQ,CAAC,WAAW,8CAAoC;IAExD,QAAQ,CAAC,cAAc,qEAErB;IACF,QAAQ,CAAC,cAAc,kEAOrB;IACF,QAAQ,CAAC,gBAAgB,oEAEvB;IACF,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,iEAGb;IAEH,QAAQ,CAAC,QAAQ,8CAAsB;IAEvC,QAAQ,CAAC,SAAS,8CAAiC;IAEnD,SAAS,CAAC,QAAQ,CAAC,KAAK,iDAAc;;IAatC,SAAS,CAAC,QAAQ,CAAC,cAAc,2CAQ9B;IAEH,SAAS,CAAC,QAAQ,CAAC,aAAa,yCAG7B;IAEH,SAAS,CAAC,QAAQ,CAAC,eAAe,+CAQ/B;IAEH,SAAS,CAAC,QAAQ,CAAC,WAAW,yCAE5B;IAEF,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI;IAKlC,OAAO,CAAC,UAAU;CAQnB"}
|