@tailng-ui/primitives 0.1.0 → 0.11.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.
Files changed (99) hide show
  1. package/package.json +9 -3
  2. package/src/index.d.ts +5 -0
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +5 -0
  5. package/src/index.js.map +1 -1
  6. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
  7. package/src/lib/feedback/progress-bar/tng-progress-bar.js +2 -1
  8. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
  9. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
  10. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +2 -1
  11. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
  12. package/src/lib/feedback/skeleton/tng-skeleton.d.ts +1 -0
  13. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
  14. package/src/lib/feedback/skeleton/tng-skeleton.js +4 -0
  15. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
  16. package/src/lib/form/chips/tng-chips.d.ts +53 -1
  17. package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
  18. package/src/lib/form/chips/tng-chips.js +281 -1
  19. package/src/lib/form/chips/tng-chips.js.map +1 -1
  20. package/src/lib/form/input-otp/tng-input-otp.d.ts +22 -0
  21. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
  22. package/src/lib/form/input-otp/tng-input-otp.js +105 -1
  23. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
  24. package/src/lib/form/label/tng-label.d.ts +2 -0
  25. package/src/lib/form/label/tng-label.d.ts.map +1 -1
  26. package/src/lib/form/label/tng-label.js +9 -0
  27. package/src/lib/form/label/tng-label.js.map +1 -1
  28. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +1 -0
  29. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
  30. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +26 -0
  31. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
  32. package/src/lib/form/radio/tng-radio.d.ts +26 -0
  33. package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
  34. package/src/lib/form/radio/tng-radio.js +129 -1
  35. package/src/lib/form/radio/tng-radio.js.map +1 -1
  36. package/src/lib/form/textarea/tng-textarea.d.ts +6 -14
  37. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
  38. package/src/lib/form/textarea/tng-textarea.js +42 -85
  39. package/src/lib/form/textarea/tng-textarea.js.map +1 -1
  40. package/src/lib/layout/accordion/tng-accordion.d.ts +9 -0
  41. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
  42. package/src/lib/layout/accordion/tng-accordion.js +113 -0
  43. package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
  44. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts +20 -0
  45. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -0
  46. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +106 -0
  47. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -0
  48. package/src/lib/layout/tree/index.d.ts +5 -0
  49. package/src/lib/layout/tree/index.d.ts.map +1 -0
  50. package/src/lib/layout/tree/index.js +5 -0
  51. package/src/lib/layout/tree/index.js.map +1 -0
  52. package/src/lib/layout/tree/tng-tree-group.d.ts +10 -0
  53. package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -0
  54. package/src/lib/layout/tree/tng-tree-group.js +29 -0
  55. package/src/lib/layout/tree/tng-tree-group.js.map +1 -0
  56. package/src/lib/layout/tree/tng-tree-indicator.d.ts +8 -0
  57. package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -0
  58. package/src/lib/layout/tree/tng-tree-indicator.js +36 -0
  59. package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -0
  60. package/src/lib/layout/tree/tng-tree-item.d.ts +36 -0
  61. package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -0
  62. package/src/lib/layout/tree/tng-tree-item.js +139 -0
  63. package/src/lib/layout/tree/tng-tree-item.js.map +1 -0
  64. package/src/lib/layout/tree/tng-tree.d.ts +64 -1
  65. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
  66. package/src/lib/layout/tree/tng-tree.js +536 -1
  67. package/src/lib/layout/tree/tng-tree.js.map +1 -1
  68. package/src/lib/layout/tree/tng-tree.transforms.d.ts +10 -0
  69. package/src/lib/layout/tree/tng-tree.transforms.d.ts.map +1 -0
  70. package/src/lib/layout/tree/tng-tree.transforms.js +46 -0
  71. package/src/lib/layout/tree/tng-tree.transforms.js.map +1 -0
  72. package/src/lib/overlay/dialog/tng-dialog.d.ts +158 -0
  73. package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -0
  74. package/src/lib/overlay/dialog/tng-dialog.js +854 -0
  75. package/src/lib/overlay/dialog/tng-dialog.js.map +1 -0
  76. package/src/lib/overlay/popover/tng-popover.d.ts +121 -0
  77. package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -0
  78. package/src/lib/overlay/popover/tng-popover.js +614 -0
  79. package/src/lib/overlay/popover/tng-popover.js.map +1 -0
  80. package/src/lib/overlay/tng-overlay-runtime.d.ts +11 -0
  81. package/src/lib/overlay/tng-overlay-runtime.d.ts.map +1 -0
  82. package/src/lib/overlay/tng-overlay-runtime.js +6 -0
  83. package/src/lib/overlay/tng-overlay-runtime.js.map +1 -0
  84. package/src/lib/overlay/tooltip/tng-tooltip.d.ts +92 -3
  85. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
  86. package/src/lib/overlay/tooltip/tng-tooltip.js +474 -3
  87. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
  88. package/src/lib/utility/badge/tng-badge.d.ts +6 -0
  89. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
  90. package/src/lib/utility/badge/tng-badge.js +65 -0
  91. package/src/lib/utility/badge/tng-badge.js.map +1 -1
  92. package/src/lib/utility/copy/tng-copy.d.ts +21 -10
  93. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
  94. package/src/lib/utility/copy/tng-copy.js +117 -88
  95. package/src/lib/utility/copy/tng-copy.js.map +1 -1
  96. package/src/lib/utility/tag/tng-tag.d.ts +37 -0
  97. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
  98. package/src/lib/utility/tag/tng-tag.js +195 -1
  99. package/src/lib/utility/tag/tng-tag.js.map +1 -1
package/package.json CHANGED
@@ -1,13 +1,19 @@
1
1
  {
2
2
  "name": "@tailng-ui/primitives",
3
- "version": "0.1.0",
3
+ "version": "0.11.0",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/tailng/tailng-ui"
7
+ },
8
+ "dependencies": {
9
+ "@tailng-ui/cdk": "^0.11.0"
10
+ },
4
11
  "peerDependencies": {
5
12
  "@angular/core": "^21.1.0",
6
- "@tailng-ui/cdk": "workspace:*",
7
13
  "tslib": "^2.3.0"
8
14
  },
9
15
  "sideEffects": false,
10
16
  "types": "./src/index.d.ts",
11
17
  "main": "./src/index.js",
12
18
  "type": "commonjs"
13
- }
19
+ }
package/src/index.d.ts CHANGED
@@ -40,6 +40,11 @@ export * from './lib/layout/grid/tng-grid';
40
40
  export * from './lib/layout/separator/tng-separator';
41
41
  export * from './lib/layout/stepper/tng-stepper';
42
42
  export * from './lib/layout/tree/tng-tree';
43
+ export * from './lib/layout/tree/tng-tree-item';
44
+ export * from './lib/layout/tree/tng-tree-group';
45
+ export * from './lib/layout/tree/tng-tree-indicator';
46
+ export * from './lib/overlay/dialog/tng-dialog';
47
+ export * from './lib/overlay/popover/tng-popover';
43
48
  export * from './lib/overlay/tooltip/tng-tooltip';
44
49
  export * from './lib/feedback/empty/tng-empty';
45
50
  export * from './lib/feedback/progress-bar/tng-progress-bar';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../libs/tailng-ui/primitives/src/index.ts"],"names":[],"mappings":"AACA,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sDAAsD,CAAC;AACrE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AAGrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AAGzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAG3C,cAAc,mCAAmC,CAAC;AAGlD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sDAAsD,CAAC;AACrE,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAG/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../libs/tailng-ui/primitives/src/index.ts"],"names":[],"mappings":"AACA,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sDAAsD,CAAC;AACrE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AAGrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AAGzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AAGrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sDAAsD,CAAC;AACrE,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAG/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC"}
package/src/index.js CHANGED
@@ -43,7 +43,12 @@ export * from './lib/layout/grid/tng-grid';
43
43
  export * from './lib/layout/separator/tng-separator';
44
44
  export * from './lib/layout/stepper/tng-stepper';
45
45
  export * from './lib/layout/tree/tng-tree';
46
+ export * from './lib/layout/tree/tng-tree-item';
47
+ export * from './lib/layout/tree/tng-tree-group';
48
+ export * from './lib/layout/tree/tng-tree-indicator';
46
49
  // Overlay
50
+ export * from './lib/overlay/dialog/tng-dialog';
51
+ export * from './lib/overlay/popover/tng-popover';
47
52
  export * from './lib/overlay/tooltip/tng-tooltip';
48
53
  // Feedback
49
54
  export * from './lib/feedback/empty/tng-empty';
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/tailng-ui/primitives/src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sDAAsD,CAAC;AACrE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AAErD,0DAA0D;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AAEzD,SAAS;AACT,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAE3C,UAAU;AACV,cAAc,mCAAmC,CAAC;AAElD,WAAW;AACX,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sDAAsD,CAAC;AACrE,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAE/C,UAAU;AACV,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC","sourcesContent":["// Navigation\nexport * from './lib/navigation/breadcrumb/tng-breadcrumb';\nexport * from './lib/navigation/context-menu/tng-context-menu';\nexport * from './lib/navigation/dropdown-menu/tng-dropdown-menu';\nexport * from './lib/navigation/menu/tng-menu';\nexport * from './lib/navigation/menubar/tng-menubar';\nexport * from './lib/navigation/navigation-menu/tng-navigation-menu';\nexport * from './lib/navigation/tabs/tng-tabs';\nexport * from './lib/navigation/toolbar/tng-toolbar';\n\n// Form (listbox first - autocomplete/select depend on it)\nexport * from './lib/form/listbox/listbox.directive';\nexport * from './lib/form/listbox/option.directive';\nexport * from './lib/form/listbox/tokens';\nexport * from './lib/form/autocomplete';\nexport * from './lib/form/button-toggle/tng-button-toggle';\nexport * from './lib/form/checkbox/tng-checkbox';\nexport * from './lib/form/chips/tng-chips';\nexport * from './lib/form/combobox/tng-combobox';\nexport * from './lib/form/input/tng-input';\nexport * from './lib/form/input-otp/tng-input-otp';\nexport * from './lib/form/label/tng-label';\nexport * from './lib/form/multiselect/tng-multiselect';\nexport * from './lib/form/multi-select';\nexport * from './lib/form/radio/tng-radio';\nexport * from './lib/form/multi-autocomplete';\n\nexport * from './lib/form/select/tng-select';\nexport * from './lib/form/select/tng-select.parts';\nexport * from './lib/form/select/tng-select.overlay';\nexport * from './lib/form/select/tng-select.listbox';\nexport * from './lib/form/select/tng-select.listbox.types';\n\nexport * from './lib/form/slider/tng-slider';\nexport * from './lib/form/switch/tng-switch';\nexport * from './lib/form/textarea/tng-textarea';\nexport * from './lib/form/toggle/tng-toggle';\nexport * from './lib/form/toggle-group/tng-toggle-group';\n\n// Layout\nexport * from './lib/layout/accordion/tng-accordion';\nexport * from './lib/layout/bottom-sheet/tng-bottom-sheet';\nexport * from './lib/layout/card/tng-card';\nexport * from './lib/layout/collapsible/tng-collapsible';\nexport * from './lib/layout/drawer/tng-drawer';\nexport * from './lib/layout/grid/tng-grid';\nexport * from './lib/layout/separator/tng-separator';\nexport * from './lib/layout/stepper/tng-stepper';\nexport * from './lib/layout/tree/tng-tree';\n\n// Overlay\nexport * from './lib/overlay/tooltip/tng-tooltip';\n\n// Feedback\nexport * from './lib/feedback/empty/tng-empty';\nexport * from './lib/feedback/progress-bar/tng-progress-bar';\nexport * from './lib/feedback/progress-spinner/tng-progress-spinner';\nexport * from './lib/feedback/skeleton/tng-skeleton';\nexport * from './lib/feedback/toast/tng-toast';\n\n// Utility\nexport * from './lib/utility/avatar/tng-avatar';\nexport * from './lib/utility/badge/tng-badge';\nexport * from './lib/utility/press/tng-press';\nexport * from './lib/utility/code-block/tng-code-block';\nexport * from './lib/utility/copy/tng-copy';\nexport * from './lib/utility/tag/tng-tag';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/tailng-ui/primitives/src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sDAAsD,CAAC;AACrE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AAErD,0DAA0D;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AAEzD,SAAS;AACT,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AAErD,UAAU;AACV,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAElD,WAAW;AACX,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sDAAsD,CAAC;AACrE,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAE/C,UAAU;AACV,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC","sourcesContent":["// Navigation\nexport * from './lib/navigation/breadcrumb/tng-breadcrumb';\nexport * from './lib/navigation/context-menu/tng-context-menu';\nexport * from './lib/navigation/dropdown-menu/tng-dropdown-menu';\nexport * from './lib/navigation/menu/tng-menu';\nexport * from './lib/navigation/menubar/tng-menubar';\nexport * from './lib/navigation/navigation-menu/tng-navigation-menu';\nexport * from './lib/navigation/tabs/tng-tabs';\nexport * from './lib/navigation/toolbar/tng-toolbar';\n\n// Form (listbox first - autocomplete/select depend on it)\nexport * from './lib/form/listbox/listbox.directive';\nexport * from './lib/form/listbox/option.directive';\nexport * from './lib/form/listbox/tokens';\nexport * from './lib/form/autocomplete';\nexport * from './lib/form/button-toggle/tng-button-toggle';\nexport * from './lib/form/checkbox/tng-checkbox';\nexport * from './lib/form/chips/tng-chips';\nexport * from './lib/form/combobox/tng-combobox';\nexport * from './lib/form/input/tng-input';\nexport * from './lib/form/input-otp/tng-input-otp';\nexport * from './lib/form/label/tng-label';\nexport * from './lib/form/multiselect/tng-multiselect';\nexport * from './lib/form/multi-select';\nexport * from './lib/form/radio/tng-radio';\nexport * from './lib/form/multi-autocomplete';\n\nexport * from './lib/form/select/tng-select';\nexport * from './lib/form/select/tng-select.parts';\nexport * from './lib/form/select/tng-select.overlay';\nexport * from './lib/form/select/tng-select.listbox';\nexport * from './lib/form/select/tng-select.listbox.types';\n\nexport * from './lib/form/slider/tng-slider';\nexport * from './lib/form/switch/tng-switch';\nexport * from './lib/form/textarea/tng-textarea';\nexport * from './lib/form/toggle/tng-toggle';\nexport * from './lib/form/toggle-group/tng-toggle-group';\n\n// Layout\nexport * from './lib/layout/accordion/tng-accordion';\nexport * from './lib/layout/bottom-sheet/tng-bottom-sheet';\nexport * from './lib/layout/card/tng-card';\nexport * from './lib/layout/collapsible/tng-collapsible';\nexport * from './lib/layout/drawer/tng-drawer';\nexport * from './lib/layout/grid/tng-grid';\nexport * from './lib/layout/separator/tng-separator';\nexport * from './lib/layout/stepper/tng-stepper';\nexport * from './lib/layout/tree/tng-tree';\nexport * from './lib/layout/tree/tng-tree-item';\nexport * from './lib/layout/tree/tng-tree-group';\nexport * from './lib/layout/tree/tng-tree-indicator';\n\n// Overlay\nexport * from './lib/overlay/dialog/tng-dialog';\nexport * from './lib/overlay/popover/tng-popover';\nexport * from './lib/overlay/tooltip/tng-tooltip';\n\n// Feedback\nexport * from './lib/feedback/empty/tng-empty';\nexport * from './lib/feedback/progress-bar/tng-progress-bar';\nexport * from './lib/feedback/progress-spinner/tng-progress-spinner';\nexport * from './lib/feedback/skeleton/tng-skeleton';\nexport * from './lib/feedback/toast/tng-toast';\n\n// Utility\nexport * from './lib/utility/avatar/tng-avatar';\nexport * from './lib/utility/badge/tng-badge';\nexport * from './lib/utility/press/tng-press';\nexport * from './lib/utility/code-block/tng-code-block';\nexport * from './lib/utility/copy/tng-copy';\nexport * from './lib/utility/tag/tng-tag';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-progress-bar.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-bar/tng-progress-bar.ts"],"names":[],"mappings":"AAMA,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAUD;AAED,qBAIa,cAAc;IACzB,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,qBAAqB,IAAI,EAAE,GAAG,IAAI,CAE/C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;IAGtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAErD,OAAO,KAAK,KAAK,GAMhB;CACF;AAED,qBAIa,uBAAuB;IAElC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,wBAAwB,CAAU;CACjE"}
1
+ {"version":3,"file":"tng-progress-bar.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-bar/tng-progress-bar.ts"],"names":[],"mappings":"AAMA,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAWD;AAED,qBAIa,cAAc;IACzB,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,qBAAqB,IAAI,EAAE,GAAG,IAAI,CAE/C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;IAGtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAErD,OAAO,KAAK,KAAK,GAMhB;CACF;AAED,qBAIa,uBAAuB;IAElC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,wBAAwB,CAAU;CACjE"}
@@ -12,7 +12,8 @@ export function normalizeTngProgressBarMax(value) {
12
12
  export function resolveTngProgressBarRange(min, max, value) {
13
13
  const resolvedMin = normalizeTngProgressBarMin(min);
14
14
  const resolvedMax = Math.max(normalizeTngProgressBarMax(max), resolvedMin);
15
- const resolvedValue = Math.min(Math.max(value, resolvedMin), resolvedMax);
15
+ const normalizedValue = normalizeFiniteNumber(value, resolvedMin);
16
+ const resolvedValue = Math.min(Math.max(normalizedValue, resolvedMin), resolvedMax);
16
17
  return Object.freeze({
17
18
  max: resolvedMax,
18
19
  min: resolvedMin,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-progress-bar.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-bar/tng-progress-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { booleanAttribute, Directive, HostBinding, input } from '@angular/core';\n\nfunction normalizeFiniteNumber(value: number, fallback: number): number {\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport function normalizeTngProgressBarMin(value: number): number {\n return normalizeFiniteNumber(value, 0);\n}\n\nexport function normalizeTngProgressBarMax(value: number): number {\n return normalizeFiniteNumber(value, 100);\n}\n\nexport function resolveTngProgressBarRange(\n min: number,\n max: number,\n value: number,\n): Readonly<{\n max: number;\n min: number;\n value: number;\n}> {\n const resolvedMin = normalizeTngProgressBarMin(min);\n const resolvedMax = Math.max(normalizeTngProgressBarMax(max), resolvedMin);\n const resolvedValue = Math.min(Math.max(value, resolvedMin), resolvedMax);\n\n return Object.freeze({\n max: resolvedMax,\n min: resolvedMin,\n value: resolvedValue,\n });\n}\n\n@Directive({\n selector: '[tngProgressBar]',\n exportAs: 'tngProgressBar',\n})\nexport class TngProgressBar {\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 @HostBinding('attr.aria-valuemax')\n protected get ariaValueMaxAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.max);\n }\n\n @HostBinding('attr.aria-valuemin')\n protected get ariaValueMinAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.min);\n }\n\n @HostBinding('attr.aria-valuenow')\n protected get ariaValueNowAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.value);\n }\n\n @HostBinding('attr.data-indeterminate')\n protected get dataIndeterminateAttr(): '' | null {\n return this.indeterminate() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-bar' as const;\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'progressbar' as const;\n\n private get range(): Readonly<{\n max: number;\n min: number;\n value: number;\n }> {\n return resolveTngProgressBarRange(this.min(), this.max(), this.value());\n }\n}\n\n@Directive({\n selector: '[tngProgressBarIndicator]',\n exportAs: 'tngProgressBarIndicator',\n})\nexport class TngProgressBarIndicator {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-bar-indicator' as const;\n}\n"]}
1
+ {"version":3,"file":"tng-progress-bar.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-bar/tng-progress-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { booleanAttribute, Directive, HostBinding, input } from '@angular/core';\n\nfunction normalizeFiniteNumber(value: number, fallback: number): number {\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport function normalizeTngProgressBarMin(value: number): number {\n return normalizeFiniteNumber(value, 0);\n}\n\nexport function normalizeTngProgressBarMax(value: number): number {\n return normalizeFiniteNumber(value, 100);\n}\n\nexport function resolveTngProgressBarRange(\n min: number,\n max: number,\n value: number,\n): Readonly<{\n max: number;\n min: number;\n value: number;\n}> {\n const resolvedMin = normalizeTngProgressBarMin(min);\n const resolvedMax = Math.max(normalizeTngProgressBarMax(max), resolvedMin);\n const normalizedValue = normalizeFiniteNumber(value, resolvedMin);\n const resolvedValue = Math.min(Math.max(normalizedValue, resolvedMin), resolvedMax);\n\n return Object.freeze({\n max: resolvedMax,\n min: resolvedMin,\n value: resolvedValue,\n });\n}\n\n@Directive({\n selector: '[tngProgressBar]',\n exportAs: 'tngProgressBar',\n})\nexport class TngProgressBar {\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 @HostBinding('attr.aria-valuemax')\n protected get ariaValueMaxAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.max);\n }\n\n @HostBinding('attr.aria-valuemin')\n protected get ariaValueMinAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.min);\n }\n\n @HostBinding('attr.aria-valuenow')\n protected get ariaValueNowAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.value);\n }\n\n @HostBinding('attr.data-indeterminate')\n protected get dataIndeterminateAttr(): '' | null {\n return this.indeterminate() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-bar' as const;\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'progressbar' as const;\n\n private get range(): Readonly<{\n max: number;\n min: number;\n value: number;\n }> {\n return resolveTngProgressBarRange(this.min(), this.max(), this.value());\n }\n}\n\n@Directive({\n selector: '[tngProgressBarIndicator]',\n exportAs: 'tngProgressBarIndicator',\n})\nexport class TngProgressBarIndicator {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-bar-indicator' as const;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-progress-spinner.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-spinner/tng-progress-spinner.ts"],"names":[],"mappings":"AAMA,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAUD;AAED,qBAIa,kBAAkB;IAC7B,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,qBAAqB,IAAI,EAAE,GAAG,IAAI,CAE/C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,kBAAkB,CAAU;IAG1D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAErD,OAAO,KAAK,KAAK,GAMhB;CACF"}
1
+ {"version":3,"file":"tng-progress-spinner.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-spinner/tng-progress-spinner.ts"],"names":[],"mappings":"AAMA,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAWD;AAED,qBAIa,kBAAkB;IAC7B,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,qBAAqB,IAAI,EAAE,GAAG,IAAI,CAE/C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,kBAAkB,CAAU;IAG1D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAErD,OAAO,KAAK,KAAK,GAMhB;CACF"}
@@ -12,7 +12,8 @@ export function normalizeTngProgressSpinnerMax(value) {
12
12
  export function resolveTngProgressSpinnerRange(min, max, value) {
13
13
  const resolvedMin = normalizeTngProgressSpinnerMin(min);
14
14
  const resolvedMax = Math.max(normalizeTngProgressSpinnerMax(max), resolvedMin);
15
- const resolvedValue = Math.min(Math.max(value, resolvedMin), resolvedMax);
15
+ const normalizedValue = normalizeFiniteNumber(value, resolvedMin);
16
+ const resolvedValue = Math.min(Math.max(normalizedValue, resolvedMin), resolvedMax);
16
17
  return Object.freeze({
17
18
  max: resolvedMax,
18
19
  min: resolvedMin,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-progress-spinner.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-spinner/tng-progress-spinner.ts"],"names":[],"mappings":"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","sourcesContent":["import { booleanAttribute, Directive, HostBinding, input } from '@angular/core';\n\nfunction normalizeFiniteNumber(value: number, fallback: number): number {\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport function normalizeTngProgressSpinnerMin(value: number): number {\n return normalizeFiniteNumber(value, 0);\n}\n\nexport function normalizeTngProgressSpinnerMax(value: number): number {\n return normalizeFiniteNumber(value, 100);\n}\n\nexport function resolveTngProgressSpinnerRange(\n min: number,\n max: number,\n value: number,\n): Readonly<{\n max: number;\n min: number;\n value: number;\n}> {\n const resolvedMin = normalizeTngProgressSpinnerMin(min);\n const resolvedMax = Math.max(normalizeTngProgressSpinnerMax(max), resolvedMin);\n const resolvedValue = Math.min(Math.max(value, resolvedMin), resolvedMax);\n\n return Object.freeze({\n max: resolvedMax,\n min: resolvedMin,\n value: resolvedValue,\n });\n}\n\n@Directive({\n selector: '[tngProgressSpinner]',\n exportAs: 'tngProgressSpinner',\n})\nexport class TngProgressSpinner {\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 value = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n typeof value === 'number' ? value : Number(value),\n });\n\n @HostBinding('attr.aria-valuemax')\n protected get ariaValueMaxAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.max);\n }\n\n @HostBinding('attr.aria-valuemin')\n protected get ariaValueMinAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.min);\n }\n\n @HostBinding('attr.aria-valuenow')\n protected get ariaValueNowAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.value);\n }\n\n @HostBinding('attr.data-indeterminate')\n protected get dataIndeterminateAttr(): '' | null {\n return this.indeterminate() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-spinner' as const;\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'progressbar' as const;\n\n private get range(): Readonly<{\n max: number;\n min: number;\n value: number;\n }> {\n return resolveTngProgressSpinnerRange(this.min(), this.max(), this.value());\n }\n}\n"]}
1
+ {"version":3,"file":"tng-progress-spinner.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-spinner/tng-progress-spinner.ts"],"names":[],"mappings":"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","sourcesContent":["import { booleanAttribute, Directive, HostBinding, input } from '@angular/core';\n\nfunction normalizeFiniteNumber(value: number, fallback: number): number {\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport function normalizeTngProgressSpinnerMin(value: number): number {\n return normalizeFiniteNumber(value, 0);\n}\n\nexport function normalizeTngProgressSpinnerMax(value: number): number {\n return normalizeFiniteNumber(value, 100);\n}\n\nexport function resolveTngProgressSpinnerRange(\n min: number,\n max: number,\n value: number,\n): Readonly<{\n max: number;\n min: number;\n value: number;\n}> {\n const resolvedMin = normalizeTngProgressSpinnerMin(min);\n const resolvedMax = Math.max(normalizeTngProgressSpinnerMax(max), resolvedMin);\n const normalizedValue = normalizeFiniteNumber(value, resolvedMin);\n const resolvedValue = Math.min(Math.max(normalizedValue, resolvedMin), resolvedMax);\n\n return Object.freeze({\n max: resolvedMax,\n min: resolvedMin,\n value: resolvedValue,\n });\n}\n\n@Directive({\n selector: '[tngProgressSpinner]',\n exportAs: 'tngProgressSpinner',\n})\nexport class TngProgressSpinner {\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 value = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n typeof value === 'number' ? value : Number(value),\n });\n\n @HostBinding('attr.aria-valuemax')\n protected get ariaValueMaxAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.max);\n }\n\n @HostBinding('attr.aria-valuemin')\n protected get ariaValueMinAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.min);\n }\n\n @HostBinding('attr.aria-valuenow')\n protected get ariaValueNowAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.value);\n }\n\n @HostBinding('attr.data-indeterminate')\n protected get dataIndeterminateAttr(): '' | null {\n return this.indeterminate() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-spinner' as const;\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'progressbar' as const;\n\n private get range(): Readonly<{\n max: number;\n min: number;\n value: number;\n }> {\n return resolveTngProgressSpinnerRange(this.min(), this.max(), this.value());\n }\n}\n"]}
@@ -4,6 +4,7 @@ export declare class TngSkeleton {
4
4
  readonly animated: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
5
5
  readonly rounded: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
6
6
  protected readonly ariaHiddenAttr: "true";
7
+ protected readonly roleAttr: "presentation";
7
8
  protected get dataAnimatedAttr(): 'false' | 'true';
8
9
  protected get dataRoundedAttr(): 'false' | 'true';
9
10
  protected readonly dataSlot: "skeleton";
@@ -1 +1 @@
1
- {"version":3,"file":"tng-skeleton.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/skeleton/tng-skeleton.ts"],"names":[],"mappings":"AAEA,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAElF;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAEhF;AAED,qBAIa,WAAW;IACtB,SAAgB,QAAQ,8EAErB;IACH,SAAgB,OAAO,8EAEpB;IAGH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAG,MAAM,CAAU;IAGpD,SAAS,KAAK,gBAAgB,IAAI,OAAO,GAAG,MAAM,CAEjD;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,CAEhD;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;CACnD"}
1
+ {"version":3,"file":"tng-skeleton.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/skeleton/tng-skeleton.ts"],"names":[],"mappings":"AAEA,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAElF;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAEhF;AAED,qBAIa,WAAW;IACtB,SAAgB,QAAQ,8EAErB;IACH,SAAgB,OAAO,8EAEpB;IAGH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAG,MAAM,CAAU;IAGpD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;IAGtD,SAAS,KAAK,gBAAgB,IAAI,OAAO,GAAG,MAAM,CAEjD;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,CAEhD;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;CACnD"}
@@ -14,6 +14,7 @@ let TngSkeleton = class TngSkeleton {
14
14
  transform: booleanAttribute,
15
15
  });
16
16
  ariaHiddenAttr = 'true';
17
+ roleAttr = 'presentation';
17
18
  get dataAnimatedAttr() {
18
19
  return resolveTngSkeletonDataAnimated(this.animated());
19
20
  }
@@ -25,6 +26,9 @@ let TngSkeleton = class TngSkeleton {
25
26
  __decorate([
26
27
  HostBinding('attr.aria-hidden')
27
28
  ], TngSkeleton.prototype, "ariaHiddenAttr", void 0);
29
+ __decorate([
30
+ HostBinding('attr.role')
31
+ ], TngSkeleton.prototype, "roleAttr", void 0);
28
32
  __decorate([
29
33
  HostBinding('attr.data-animated')
30
34
  ], TngSkeleton.prototype, "dataAnimatedAttr", null);
@@ -1 +1 @@
1
- {"version":3,"file":"tng-skeleton.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/skeleton/tng-skeleton.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEhF,MAAM,UAAU,8BAA8B,CAAC,QAAiB;IAC9D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACpC,CAAC;AAMM,IAAM,WAAW,GAAjB,MAAM,WAAW;IACN,QAAQ,GAAG,KAAK,CAA4B,IAAI,EAAE;QAChE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,OAAO,GAAG,KAAK,CAA4B,IAAI,EAAE;QAC/D,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAGgB,cAAc,GAAG,MAAe,CAAC;IAGpD,IAAc,gBAAgB;QAC5B,OAAO,8BAA8B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAGD,IAAc,eAAe;QAC3B,OAAO,6BAA6B,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAGkB,QAAQ,GAAG,UAAmB,CAAC;CACnD,CAAA;AAdoB;IADlB,WAAW,CAAC,kBAAkB,CAAC;mDACoB;AAGpD;IADC,WAAW,CAAC,oBAAoB,CAAC;mDAGjC;AAGD;IADC,WAAW,CAAC,mBAAmB,CAAC;kDAGhC;AAGkB;IADlB,WAAW,CAAC,gBAAgB,CAAC;6CACoB;AAtBvC,WAAW;IAJvB,SAAS,CAAC;QACT,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,aAAa;KACxB,CAAC;GACW,WAAW,CAuBvB","sourcesContent":["import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';\n\nexport function resolveTngSkeletonDataAnimated(animated: boolean): 'false' | 'true' {\n return animated ? 'true' : 'false';\n}\n\nexport function resolveTngSkeletonDataRounded(rounded: boolean): 'false' | 'true' {\n return rounded ? 'true' : 'false';\n}\n\n@Directive({\n selector: '[tngSkeleton]',\n exportAs: 'tngSkeleton',\n})\nexport class TngSkeleton {\n public readonly animated = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly rounded = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.aria-hidden')\n protected readonly ariaHiddenAttr = 'true' as const;\n\n @HostBinding('attr.data-animated')\n protected get dataAnimatedAttr(): 'false' | 'true' {\n return resolveTngSkeletonDataAnimated(this.animated());\n }\n\n @HostBinding('attr.data-rounded')\n protected get dataRoundedAttr(): 'false' | 'true' {\n return resolveTngSkeletonDataRounded(this.rounded());\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'skeleton' as const;\n}\n"]}
1
+ {"version":3,"file":"tng-skeleton.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/skeleton/tng-skeleton.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEhF,MAAM,UAAU,8BAA8B,CAAC,QAAiB;IAC9D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACpC,CAAC;AAMM,IAAM,WAAW,GAAjB,MAAM,WAAW;IACN,QAAQ,GAAG,KAAK,CAA4B,IAAI,EAAE;QAChE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,OAAO,GAAG,KAAK,CAA4B,IAAI,EAAE;QAC/D,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAGgB,cAAc,GAAG,MAAe,CAAC;IAGjC,QAAQ,GAAG,cAAuB,CAAC;IAGtD,IAAc,gBAAgB;QAC5B,OAAO,8BAA8B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAGD,IAAc,eAAe;QAC3B,OAAO,6BAA6B,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAGkB,QAAQ,GAAG,UAAmB,CAAC;CACnD,CAAA;AAjBoB;IADlB,WAAW,CAAC,kBAAkB,CAAC;mDACoB;AAGjC;IADlB,WAAW,CAAC,WAAW,CAAC;6CAC6B;AAGtD;IADC,WAAW,CAAC,oBAAoB,CAAC;mDAGjC;AAGD;IADC,WAAW,CAAC,mBAAmB,CAAC;kDAGhC;AAGkB;IADlB,WAAW,CAAC,gBAAgB,CAAC;6CACoB;AAzBvC,WAAW;IAJvB,SAAS,CAAC;QACT,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,aAAa;KACxB,CAAC;GACW,WAAW,CA0BvB","sourcesContent":["import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';\n\nexport function resolveTngSkeletonDataAnimated(animated: boolean): 'false' | 'true' {\n return animated ? 'true' : 'false';\n}\n\nexport function resolveTngSkeletonDataRounded(rounded: boolean): 'false' | 'true' {\n return rounded ? 'true' : 'false';\n}\n\n@Directive({\n selector: '[tngSkeleton]',\n exportAs: 'tngSkeleton',\n})\nexport class TngSkeleton {\n public readonly animated = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly rounded = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.aria-hidden')\n protected readonly ariaHiddenAttr = 'true' as const;\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'presentation' as const;\n\n @HostBinding('attr.data-animated')\n protected get dataAnimatedAttr(): 'false' | 'true' {\n return resolveTngSkeletonDataAnimated(this.animated());\n }\n\n @HostBinding('attr.data-rounded')\n protected get dataRoundedAttr(): 'false' | 'true' {\n return resolveTngSkeletonDataRounded(this.rounded());\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'skeleton' as const;\n}\n"]}
@@ -1,4 +1,56 @@
1
- export declare class TngChips {
1
+ import { OnInit } from '@angular/core';
2
+ export declare class TngChips implements OnInit {
3
+ private readonly internalValues;
4
+ readonly values: import("@angular/core").InputSignal<readonly unknown[] | undefined>;
5
+ readonly defaultValues: import("@angular/core").InputSignal<readonly unknown[]>;
6
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
7
+ readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
8
+ readonly chipRemove: import("@angular/core").OutputEmitterRef<unknown>;
9
+ readonly valuesChange: import("@angular/core").OutputEmitterRef<readonly unknown[]>;
10
+ ngOnInit(): void;
11
+ isDisabled(): boolean;
12
+ removeValue(value: unknown): boolean;
13
+ private isControlled;
14
+ private resolveValues;
15
+ protected get ariaLabelAttr(): string | null;
16
+ protected get dataDisabledAttr(): '' | null;
2
17
  protected readonly dataSlot: "chips";
18
+ protected readonly role: "list";
19
+ }
20
+ export declare class TngChip {
21
+ private readonly chips;
22
+ readonly value: import("@angular/core").InputSignal<unknown>;
23
+ readonly label: import("@angular/core").InputSignal<string | null>;
24
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
25
+ readonly removable: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
26
+ readonly chipRemove: import("@angular/core").OutputEmitterRef<unknown>;
27
+ isDisabled(): boolean;
28
+ isRemovable(): boolean;
29
+ resolvedLabel(): string;
30
+ requestRemove(): boolean;
31
+ protected onKeydown(event: KeyboardEvent): void;
32
+ protected get dataDisabledAttr(): '' | null;
33
+ protected readonly dataSlot: "chip";
34
+ protected get dataValueAttr(): string | null;
35
+ protected readonly role: "listitem";
36
+ }
37
+ export declare class TngChipRemove {
38
+ private readonly elementRef;
39
+ private readonly chip;
40
+ private readonly chips;
41
+ private focused;
42
+ private suppressNextClick;
43
+ readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
44
+ private isDisabled;
45
+ protected onClick(event: MouseEvent): void;
46
+ protected onFocusIn(): void;
47
+ protected onFocusOut(): void;
48
+ protected onKeydown(event: KeyboardEvent): void;
49
+ protected get ariaLabelAttr(): string;
50
+ protected get dataDisabledAttr(): '' | null;
51
+ protected get dataFocusedAttr(): '' | null;
52
+ protected readonly dataSlot: "chip-remove";
53
+ protected get disabledAttr(): '' | null;
54
+ protected get typeAttr(): 'button' | null;
3
55
  }
4
56
  //# sourceMappingURL=tng-chips.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-chips.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/chips/tng-chips.ts"],"names":[],"mappings":"AAEA,qBAIa,QAAQ;IAEnB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;CAChD"}
1
+ {"version":3,"file":"tng-chips.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/chips/tng-chips.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,MAAM,EAMP,MAAM,eAAe,CAAC;AAoCvB,qBAIa,QAAS,YAAW,MAAM;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;IAEjE,SAAgB,MAAM,sEAEnB;IACH,SAAgB,aAAa,0DAE1B;IACH,SAAgB,QAAQ,8EAGrB;IACH,SAAgB,SAAS,qDAEtB;IAEH,SAAgB,UAAU,oDAAqB;IAC/C,SAAgB,YAAY,+DAAgC;IAErD,QAAQ,IAAI,IAAI;IAIhB,UAAU,IAAI,OAAO;IAIrB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAsB3C,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IASrB,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAG/C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;CAC3C;AAED,qBAIa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;IAE9D,SAAgB,KAAK,+CAAmD;IACxE,SAAgB,KAAK,qDAAyD;IAC9E,SAAgB,QAAQ,8EAGrB;IACH,SAAgB,SAAS,8EAGtB;IAEH,SAAgB,UAAU,oDAAqB;IAExC,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAUvB,aAAa,IAAI,OAAO;IAY/B,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAe/C,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAG9C,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;CAC/C;AAED,qBAIa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;IAE9D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAElC,SAAgB,SAAS,qDAEtB;IAEH,OAAO,CAAC,UAAU;IAKlB,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAkB1C,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B,SAAS,CAAC,UAAU,IAAI,IAAI;IAK5B,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAuB/C,SAAS,KAAK,aAAa,IAAI,MAAM,CAapC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAGrD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAExC;CACF"}
@@ -1,11 +1,101 @@
1
1
  import { __decorate } from "tslib";
2
- import { Directive, HostBinding } from '@angular/core';
2
+ import { Directive, ElementRef, HostBinding, HostListener, booleanAttribute, inject, input, output, signal, } from '@angular/core';
3
+ function normalizeString(value) {
4
+ if (value === undefined || value === null) {
5
+ return null;
6
+ }
7
+ const normalized = value.trim();
8
+ return normalized.length > 0 ? normalized : null;
9
+ }
10
+ function normalizeValues(values) {
11
+ if (!Array.isArray(values) || values.length === 0) {
12
+ return [];
13
+ }
14
+ return [...values];
15
+ }
16
+ function toDataValue(value) {
17
+ if (value === null || value === undefined) {
18
+ return null;
19
+ }
20
+ return String(value);
21
+ }
22
+ function removeFirstOccurrence(values, target) {
23
+ const index = values.findIndex((item) => Object.is(item, target));
24
+ if (index < 0) {
25
+ return values;
26
+ }
27
+ return [...values.slice(0, index), ...values.slice(index + 1)];
28
+ }
3
29
  let TngChips = class TngChips {
30
+ internalValues = signal([]);
31
+ values = input(undefined, {
32
+ alias: 'tngChipsValues',
33
+ });
34
+ defaultValues = input([], {
35
+ alias: 'tngChipsDefaultValues',
36
+ });
37
+ disabled = input(false, {
38
+ alias: 'tngChipsDisabled',
39
+ transform: booleanAttribute,
40
+ });
41
+ ariaLabel = input(null, {
42
+ alias: 'tngChipsAriaLabel',
43
+ });
44
+ chipRemove = output();
45
+ valuesChange = output();
46
+ ngOnInit() {
47
+ this.internalValues.set(normalizeValues(this.defaultValues()));
48
+ }
49
+ isDisabled() {
50
+ return this.disabled();
51
+ }
52
+ removeValue(value) {
53
+ if (this.disabled()) {
54
+ return false;
55
+ }
56
+ this.chipRemove.emit(value);
57
+ const currentValues = this.resolveValues();
58
+ const nextValues = removeFirstOccurrence(currentValues, value);
59
+ const changed = nextValues !== currentValues;
60
+ if (!changed) {
61
+ return true;
62
+ }
63
+ if (!this.isControlled()) {
64
+ this.internalValues.set(nextValues);
65
+ }
66
+ this.valuesChange.emit(nextValues);
67
+ return true;
68
+ }
69
+ isControlled() {
70
+ return this.values() !== undefined;
71
+ }
72
+ resolveValues() {
73
+ if (this.isControlled()) {
74
+ return normalizeValues(this.values());
75
+ }
76
+ return this.internalValues();
77
+ }
78
+ get ariaLabelAttr() {
79
+ return normalizeString(this.ariaLabel());
80
+ }
81
+ get dataDisabledAttr() {
82
+ return this.disabled() ? '' : null;
83
+ }
4
84
  dataSlot = 'chips';
85
+ role = 'list';
5
86
  };
87
+ __decorate([
88
+ HostBinding('attr.aria-label')
89
+ ], TngChips.prototype, "ariaLabelAttr", null);
90
+ __decorate([
91
+ HostBinding('attr.data-disabled')
92
+ ], TngChips.prototype, "dataDisabledAttr", null);
6
93
  __decorate([
7
94
  HostBinding('attr.data-slot')
8
95
  ], TngChips.prototype, "dataSlot", void 0);
96
+ __decorate([
97
+ HostBinding('attr.role')
98
+ ], TngChips.prototype, "role", void 0);
9
99
  TngChips = __decorate([
10
100
  Directive({
11
101
  selector: '[tngChips]',
@@ -13,4 +103,194 @@ TngChips = __decorate([
13
103
  })
14
104
  ], TngChips);
15
105
  export { TngChips };
106
+ let TngChip = class TngChip {
107
+ chips = inject(TngChips, { optional: true });
108
+ value = input(null, { alias: 'tngChipValue' });
109
+ label = input(null, { alias: 'tngChipLabel' });
110
+ disabled = input(false, {
111
+ alias: 'tngChipDisabled',
112
+ transform: booleanAttribute,
113
+ });
114
+ removable = input(true, {
115
+ alias: 'tngChipRemovable',
116
+ transform: booleanAttribute,
117
+ });
118
+ chipRemove = output();
119
+ isDisabled() {
120
+ return this.disabled() || this.chips?.isDisabled() === true;
121
+ }
122
+ isRemovable() {
123
+ return this.removable() && !this.isDisabled();
124
+ }
125
+ resolvedLabel() {
126
+ const fromInput = normalizeString(this.label());
127
+ if (fromInput !== null) {
128
+ return fromInput;
129
+ }
130
+ const fromValue = toDataValue(this.value());
131
+ return normalizeString(fromValue) ?? 'item';
132
+ }
133
+ requestRemove() {
134
+ if (!this.isRemovable()) {
135
+ return false;
136
+ }
137
+ const chipValue = this.value();
138
+ this.chipRemove.emit(chipValue);
139
+ this.chips?.removeValue(chipValue);
140
+ return true;
141
+ }
142
+ onKeydown(event) {
143
+ if (event.key !== 'Delete' && event.key !== 'Backspace') {
144
+ return;
145
+ }
146
+ if (!this.isRemovable()) {
147
+ return;
148
+ }
149
+ event.preventDefault();
150
+ event.stopPropagation();
151
+ this.requestRemove();
152
+ }
153
+ get dataDisabledAttr() {
154
+ return this.isDisabled() ? '' : null;
155
+ }
156
+ dataSlot = 'chip';
157
+ get dataValueAttr() {
158
+ return toDataValue(this.value());
159
+ }
160
+ role = 'listitem';
161
+ };
162
+ __decorate([
163
+ HostListener('keydown', ['$event'])
164
+ ], TngChip.prototype, "onKeydown", null);
165
+ __decorate([
166
+ HostBinding('attr.data-disabled')
167
+ ], TngChip.prototype, "dataDisabledAttr", null);
168
+ __decorate([
169
+ HostBinding('attr.data-slot')
170
+ ], TngChip.prototype, "dataSlot", void 0);
171
+ __decorate([
172
+ HostBinding('attr.data-value')
173
+ ], TngChip.prototype, "dataValueAttr", null);
174
+ __decorate([
175
+ HostBinding('attr.role')
176
+ ], TngChip.prototype, "role", void 0);
177
+ TngChip = __decorate([
178
+ Directive({
179
+ selector: '[tngChip]',
180
+ exportAs: 'tngChip',
181
+ })
182
+ ], TngChip);
183
+ export { TngChip };
184
+ let TngChipRemove = class TngChipRemove {
185
+ elementRef = inject(ElementRef);
186
+ chip = inject(TngChip, { optional: true });
187
+ chips = inject(TngChips, { optional: true });
188
+ focused = false;
189
+ suppressNextClick = false;
190
+ ariaLabel = input(null, {
191
+ alias: 'tngChipRemoveAriaLabel',
192
+ });
193
+ isDisabled() {
194
+ return this.chip?.isDisabled() === true || this.chips?.isDisabled() === true;
195
+ }
196
+ onClick(event) {
197
+ if (this.suppressNextClick) {
198
+ this.suppressNextClick = false;
199
+ event.preventDefault();
200
+ event.stopPropagation();
201
+ return;
202
+ }
203
+ if (this.isDisabled()) {
204
+ event.preventDefault();
205
+ event.stopPropagation();
206
+ return;
207
+ }
208
+ this.chip?.requestRemove();
209
+ }
210
+ onFocusIn() {
211
+ this.focused = true;
212
+ }
213
+ onFocusOut() {
214
+ this.focused = false;
215
+ }
216
+ onKeydown(event) {
217
+ if (event.key !== 'Enter' && event.key !== ' ') {
218
+ return;
219
+ }
220
+ if (this.isDisabled()) {
221
+ event.preventDefault();
222
+ event.stopPropagation();
223
+ return;
224
+ }
225
+ event.preventDefault();
226
+ event.stopPropagation();
227
+ this.suppressNextClick = true;
228
+ setTimeout(() => {
229
+ this.suppressNextClick = false;
230
+ });
231
+ this.chip?.requestRemove();
232
+ }
233
+ get ariaLabelAttr() {
234
+ const explicit = normalizeString(this.ariaLabel());
235
+ if (explicit !== null) {
236
+ return explicit;
237
+ }
238
+ const hostDefined = normalizeString(this.elementRef.nativeElement.getAttribute('aria-label'));
239
+ if (hostDefined !== null) {
240
+ return hostDefined;
241
+ }
242
+ const label = this.chip?.resolvedLabel() ?? 'item';
243
+ return `Remove ${label}`;
244
+ }
245
+ get dataDisabledAttr() {
246
+ return this.isDisabled() ? '' : null;
247
+ }
248
+ get dataFocusedAttr() {
249
+ return this.focused ? '' : null;
250
+ }
251
+ dataSlot = 'chip-remove';
252
+ get disabledAttr() {
253
+ return this.isDisabled() ? '' : null;
254
+ }
255
+ get typeAttr() {
256
+ return this.elementRef.nativeElement.tagName === 'BUTTON' ? 'button' : null;
257
+ }
258
+ };
259
+ __decorate([
260
+ HostListener('click', ['$event'])
261
+ ], TngChipRemove.prototype, "onClick", null);
262
+ __decorate([
263
+ HostListener('focusin')
264
+ ], TngChipRemove.prototype, "onFocusIn", null);
265
+ __decorate([
266
+ HostListener('focusout')
267
+ ], TngChipRemove.prototype, "onFocusOut", null);
268
+ __decorate([
269
+ HostListener('keydown', ['$event'])
270
+ ], TngChipRemove.prototype, "onKeydown", null);
271
+ __decorate([
272
+ HostBinding('attr.aria-label')
273
+ ], TngChipRemove.prototype, "ariaLabelAttr", null);
274
+ __decorate([
275
+ HostBinding('attr.data-disabled')
276
+ ], TngChipRemove.prototype, "dataDisabledAttr", null);
277
+ __decorate([
278
+ HostBinding('attr.data-focused')
279
+ ], TngChipRemove.prototype, "dataFocusedAttr", null);
280
+ __decorate([
281
+ HostBinding('attr.data-slot')
282
+ ], TngChipRemove.prototype, "dataSlot", void 0);
283
+ __decorate([
284
+ HostBinding('attr.disabled')
285
+ ], TngChipRemove.prototype, "disabledAttr", null);
286
+ __decorate([
287
+ HostBinding('attr.type')
288
+ ], TngChipRemove.prototype, "typeAttr", null);
289
+ TngChipRemove = __decorate([
290
+ Directive({
291
+ selector: '[tngChipRemove]',
292
+ exportAs: 'tngChipRemove',
293
+ })
294
+ ], TngChipRemove);
295
+ export { TngChipRemove };
16
296
  //# sourceMappingURL=tng-chips.js.map