@cute-widgets/base 20.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/LICENSE.md +191 -0
  3. package/README.md +190 -0
  4. package/abstract/index.d.ts +327 -0
  5. package/alert/index.d.ts +68 -0
  6. package/autocomplete/index.d.ts +442 -0
  7. package/badge/index.d.ts +26 -0
  8. package/bottom-sheet/index.d.ts +231 -0
  9. package/button/index.d.ts +182 -0
  10. package/button-toggle/index.d.ts +225 -0
  11. package/card/index.d.ts +163 -0
  12. package/checkbox/index.d.ts +174 -0
  13. package/chips/index.d.ts +963 -0
  14. package/collapse/index.d.ts +97 -0
  15. package/core/animation/index.d.ts +43 -0
  16. package/core/datetime/index.d.ts +404 -0
  17. package/core/directives/index.d.ts +168 -0
  18. package/core/error/index.d.ts +74 -0
  19. package/core/index.d.ts +1039 -0
  20. package/core/interfaces/index.d.ts +114 -0
  21. package/core/layout/index.d.ts +53 -0
  22. package/core/line/index.d.ts +37 -0
  23. package/core/nav/index.d.ts +321 -0
  24. package/core/observers/index.d.ts +124 -0
  25. package/core/option/index.d.ts +185 -0
  26. package/core/pipes/index.d.ts +53 -0
  27. package/core/ripple/index.d.ts +66 -0
  28. package/core/testing/index.d.ts +154 -0
  29. package/core/theming/index.d.ts +118 -0
  30. package/core/types/index.d.ts +53 -0
  31. package/core/utils/index.d.ts +129 -0
  32. package/cute-widgets-base-20.0.1.tgz +0 -0
  33. package/datepicker/index.d.ts +1817 -0
  34. package/dialog/index.d.ts +484 -0
  35. package/divider/index.d.ts +24 -0
  36. package/expansion/README.md +8 -0
  37. package/expansion/index.d.ts +308 -0
  38. package/fesm2022/cute-widgets-base-abstract.mjs +547 -0
  39. package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -0
  40. package/fesm2022/cute-widgets-base-alert.mjs +198 -0
  41. package/fesm2022/cute-widgets-base-alert.mjs.map +1 -0
  42. package/fesm2022/cute-widgets-base-autocomplete.mjs +1217 -0
  43. package/fesm2022/cute-widgets-base-autocomplete.mjs.map +1 -0
  44. package/fesm2022/cute-widgets-base-badge.mjs +75 -0
  45. package/fesm2022/cute-widgets-base-badge.mjs.map +1 -0
  46. package/fesm2022/cute-widgets-base-bottom-sheet.mjs +416 -0
  47. package/fesm2022/cute-widgets-base-bottom-sheet.mjs.map +1 -0
  48. package/fesm2022/cute-widgets-base-button-toggle.mjs +640 -0
  49. package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -0
  50. package/fesm2022/cute-widgets-base-button.mjs +546 -0
  51. package/fesm2022/cute-widgets-base-button.mjs.map +1 -0
  52. package/fesm2022/cute-widgets-base-card.mjs +471 -0
  53. package/fesm2022/cute-widgets-base-card.mjs.map +1 -0
  54. package/fesm2022/cute-widgets-base-checkbox.mjs +390 -0
  55. package/fesm2022/cute-widgets-base-checkbox.mjs.map +1 -0
  56. package/fesm2022/cute-widgets-base-chips.mjs +2360 -0
  57. package/fesm2022/cute-widgets-base-chips.mjs.map +1 -0
  58. package/fesm2022/cute-widgets-base-collapse.mjs +259 -0
  59. package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -0
  60. package/fesm2022/cute-widgets-base-core-animation.mjs +53 -0
  61. package/fesm2022/cute-widgets-base-core-animation.mjs.map +1 -0
  62. package/fesm2022/cute-widgets-base-core-datetime.mjs +568 -0
  63. package/fesm2022/cute-widgets-base-core-datetime.mjs.map +1 -0
  64. package/fesm2022/cute-widgets-base-core-directives.mjs +404 -0
  65. package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -0
  66. package/fesm2022/cute-widgets-base-core-error.mjs +105 -0
  67. package/fesm2022/cute-widgets-base-core-error.mjs.map +1 -0
  68. package/fesm2022/cute-widgets-base-core-interfaces.mjs +22 -0
  69. package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -0
  70. package/fesm2022/cute-widgets-base-core-layout.mjs +74 -0
  71. package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -0
  72. package/fesm2022/cute-widgets-base-core-line.mjs +87 -0
  73. package/fesm2022/cute-widgets-base-core-line.mjs.map +1 -0
  74. package/fesm2022/cute-widgets-base-core-nav.mjs +863 -0
  75. package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -0
  76. package/fesm2022/cute-widgets-base-core-observers.mjs +304 -0
  77. package/fesm2022/cute-widgets-base-core-observers.mjs.map +1 -0
  78. package/fesm2022/cute-widgets-base-core-option.mjs +373 -0
  79. package/fesm2022/cute-widgets-base-core-option.mjs.map +1 -0
  80. package/fesm2022/cute-widgets-base-core-pipes.mjs +97 -0
  81. package/fesm2022/cute-widgets-base-core-pipes.mjs.map +1 -0
  82. package/fesm2022/cute-widgets-base-core-ripple.mjs +172 -0
  83. package/fesm2022/cute-widgets-base-core-ripple.mjs.map +1 -0
  84. package/fesm2022/cute-widgets-base-core-testing.mjs +210 -0
  85. package/fesm2022/cute-widgets-base-core-testing.mjs.map +1 -0
  86. package/fesm2022/cute-widgets-base-core-theming.mjs +314 -0
  87. package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -0
  88. package/fesm2022/cute-widgets-base-core-types.mjs +22 -0
  89. package/fesm2022/cute-widgets-base-core-types.mjs.map +1 -0
  90. package/fesm2022/cute-widgets-base-core-utils.mjs +257 -0
  91. package/fesm2022/cute-widgets-base-core-utils.mjs.map +1 -0
  92. package/fesm2022/cute-widgets-base-core.mjs +1600 -0
  93. package/fesm2022/cute-widgets-base-core.mjs.map +1 -0
  94. package/fesm2022/cute-widgets-base-datepicker.mjs +4827 -0
  95. package/fesm2022/cute-widgets-base-datepicker.mjs.map +1 -0
  96. package/fesm2022/cute-widgets-base-dialog.mjs +1046 -0
  97. package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -0
  98. package/fesm2022/cute-widgets-base-divider.mjs +86 -0
  99. package/fesm2022/cute-widgets-base-divider.mjs.map +1 -0
  100. package/fesm2022/cute-widgets-base-expansion.mjs +623 -0
  101. package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -0
  102. package/fesm2022/cute-widgets-base-form-field.mjs +969 -0
  103. package/fesm2022/cute-widgets-base-form-field.mjs.map +1 -0
  104. package/fesm2022/cute-widgets-base-grid-list.mjs +715 -0
  105. package/fesm2022/cute-widgets-base-grid-list.mjs.map +1 -0
  106. package/fesm2022/cute-widgets-base-icon.mjs +1105 -0
  107. package/fesm2022/cute-widgets-base-icon.mjs.map +1 -0
  108. package/fesm2022/cute-widgets-base-input.mjs +726 -0
  109. package/fesm2022/cute-widgets-base-input.mjs.map +1 -0
  110. package/fesm2022/cute-widgets-base-layout-container.mjs +95 -0
  111. package/fesm2022/cute-widgets-base-layout-container.mjs.map +1 -0
  112. package/fesm2022/cute-widgets-base-layout-stack.mjs +166 -0
  113. package/fesm2022/cute-widgets-base-layout-stack.mjs.map +1 -0
  114. package/fesm2022/cute-widgets-base-layout.mjs +250 -0
  115. package/fesm2022/cute-widgets-base-layout.mjs.map +1 -0
  116. package/fesm2022/cute-widgets-base-list.mjs +1557 -0
  117. package/fesm2022/cute-widgets-base-list.mjs.map +1 -0
  118. package/fesm2022/cute-widgets-base-menu.mjs +1283 -0
  119. package/fesm2022/cute-widgets-base-menu.mjs.map +1 -0
  120. package/fesm2022/cute-widgets-base-navbar.mjs +359 -0
  121. package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -0
  122. package/fesm2022/cute-widgets-base-paginator.mjs +485 -0
  123. package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -0
  124. package/fesm2022/cute-widgets-base-progress.mjs +321 -0
  125. package/fesm2022/cute-widgets-base-progress.mjs.map +1 -0
  126. package/fesm2022/cute-widgets-base-radio.mjs +637 -0
  127. package/fesm2022/cute-widgets-base-radio.mjs.map +1 -0
  128. package/fesm2022/cute-widgets-base-select.mjs +1208 -0
  129. package/fesm2022/cute-widgets-base-select.mjs.map +1 -0
  130. package/fesm2022/cute-widgets-base-sidenav.mjs +1095 -0
  131. package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -0
  132. package/fesm2022/cute-widgets-base-slider.mjs +99 -0
  133. package/fesm2022/cute-widgets-base-slider.mjs.map +1 -0
  134. package/fesm2022/cute-widgets-base-snack-bar.mjs +897 -0
  135. package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -0
  136. package/fesm2022/cute-widgets-base-sort.mjs +639 -0
  137. package/fesm2022/cute-widgets-base-sort.mjs.map +1 -0
  138. package/fesm2022/cute-widgets-base-spinner.mjs +154 -0
  139. package/fesm2022/cute-widgets-base-spinner.mjs.map +1 -0
  140. package/fesm2022/cute-widgets-base-stepper.mjs +673 -0
  141. package/fesm2022/cute-widgets-base-stepper.mjs.map +1 -0
  142. package/fesm2022/cute-widgets-base-table.mjs +1023 -0
  143. package/fesm2022/cute-widgets-base-table.mjs.map +1 -0
  144. package/fesm2022/cute-widgets-base-tabs.mjs +729 -0
  145. package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -0
  146. package/fesm2022/cute-widgets-base-timepicker.mjs +965 -0
  147. package/fesm2022/cute-widgets-base-timepicker.mjs.map +1 -0
  148. package/fesm2022/cute-widgets-base-toolbar.mjs +120 -0
  149. package/fesm2022/cute-widgets-base-toolbar.mjs.map +1 -0
  150. package/fesm2022/cute-widgets-base-tooltip.mjs +947 -0
  151. package/fesm2022/cute-widgets-base-tooltip.mjs.map +1 -0
  152. package/fesm2022/cute-widgets-base-tree.mjs +598 -0
  153. package/fesm2022/cute-widgets-base-tree.mjs.map +1 -0
  154. package/fesm2022/cute-widgets-base.mjs +68 -0
  155. package/fesm2022/cute-widgets-base.mjs.map +1 -0
  156. package/form-field/index.d.ts +401 -0
  157. package/grid-list/index.d.ts +361 -0
  158. package/icon/index.d.ts +477 -0
  159. package/index.d.ts +3 -0
  160. package/input/index.d.ts +256 -0
  161. package/layout/container/index.d.ts +31 -0
  162. package/layout/index.d.ts +78 -0
  163. package/layout/stack/index.d.ts +52 -0
  164. package/list/index.d.ts +659 -0
  165. package/menu/index.d.ts +497 -0
  166. package/navbar/index.d.ts +91 -0
  167. package/package.json +279 -0
  168. package/paginator/index.d.ts +216 -0
  169. package/progress/index.d.ts +130 -0
  170. package/radio/index.d.ts +259 -0
  171. package/select/index.d.ts +426 -0
  172. package/sidenav/index.d.ts +369 -0
  173. package/slider/index.d.ts +48 -0
  174. package/snack-bar/index.d.ts +374 -0
  175. package/sort/index.d.ts +334 -0
  176. package/spinner/index.d.ts +70 -0
  177. package/stepper/index.d.ts +295 -0
  178. package/table/index.d.ts +395 -0
  179. package/tabs/index.d.ts +307 -0
  180. package/timepicker/index.d.ts +350 -0
  181. package/toolbar/index.d.ts +36 -0
  182. package/tooltip/index.d.ts +299 -0
  183. package/tree/index.d.ts +314 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cute-widgets-base-input.mjs","sources":["../../../../projects/cute-widgets/base/input/src/input-errors.ts","../../../../projects/cute-widgets/base/input/src/input-value-accessor.ts","../../../../projects/cute-widgets/base/input/src/input-value-formatter.ts","../../../../projects/cute-widgets/base/input/src/input-value-predecessor.ts","../../../../projects/cute-widgets/base/input/src/input.ts","../../../../projects/cute-widgets/base/input/src/input.module.ts","../../../../projects/cute-widgets/base/input/cute-widgets-base-input.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\n\r\nexport function getCuteInputUnsupportedTypeError(type: string): Error {\r\n return Error(`Input type \"${type}\" isn't supported by 'cuteInput' directive.`);\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {InjectionToken, WritableSignal} from '@angular/core';\r\n\r\n/**\r\n * This token is used to inject the object whose value should be set into `CuteInput`. If none is\r\n * provided, the native `HTMLInputElement` is used. Directives like `CuteDatepickerInput` can provide\r\n * themselves for this token, in order to make `CuteInput` delegate the getting and setting of the\r\n * value to them.\r\n */\r\nexport const CUTE_INPUT_VALUE_ACCESSOR = new InjectionToken<{value: any | WritableSignal<any>}>(\r\n 'CUTE_INPUT_VALUE_ACCESSOR',\r\n);\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {InjectionToken} from \"@angular/core\";\r\n\r\n/** Object that can be used to format the current value of the input. */\r\nexport interface CuteInputValueFormatter {\r\n /**\r\n * Applies some formatting to the original value\r\n * @param value Value to format\r\n * @param args Any number of arguments\r\n * @returns The final transformed or unchanged value\r\n */\r\n format(value: any, ...args: any[]): any\r\n}\r\n\r\n/** This token is used to inject an object that will be applied to format a raw input value */\r\nexport const CUTE_INPUT_VALUE_FORMATTER = new InjectionToken<CuteInputValueFormatter>('CUTE_INPUT_VALUE_FORMATTER');\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {InjectionToken} from \"@angular/core\";\r\n\r\nexport interface CuteInputValuePredecessor {\r\n beforeWriteValue(value: any): string;\r\n beforeOnChange(value: string): any;\r\n}\r\n\r\n/**\r\n * This token is used to inject an object with special methods that will be invoked before _ControlValueAccessor_'s methods do.\r\n * The typical example of such object is a _CuteEditMask_, that needs to get masked value before assign it to the view and\r\n * get cleaned value before send it to the model (form control).\r\n */\r\nexport const CUTE_INPUT_VALUE_PREDECESSOR = new InjectionToken<CuteInputValuePredecessor>(\r\n 'CUTE_INPUT_VALUE_PREDECESSOR',\r\n);\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\r\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\r\nimport {AutofillMonitor} from '@angular/cdk/text-field';\r\nimport {\r\n AfterViewInit, booleanAttribute,\r\n Directive,\r\n DoCheck, effect,\r\n ElementRef, HostBinding, inject,\r\n InjectionToken,\r\n Input, isDevMode, isSignal,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges, WritableSignal,\r\n} from '@angular/core';\r\nimport {\r\n FormGroupDirective,\r\n NgControl,\r\n NgForm,\r\n Validators\r\n} from '@angular/forms';\r\nimport {ErrorStateMatcher, _ErrorStateTracker} from '@cute-widgets/base/core/error';\r\nimport {CuteFormFieldControl, CuteFormField, CUTE_FORM_FIELD} from '@cute-widgets/base/form-field';\r\nimport {getCuteInputUnsupportedTypeError} from './input-errors';\r\nimport {CUTE_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\r\nimport {CUTE_INPUT_VALUE_FORMATTER} from \"./input-value-formatter\";\r\nimport {CUTE_INPUT_VALUE_PREDECESSOR} from \"./input-value-predecessor\";\r\nimport {RelativeSize3} from \"@cute-widgets/base/core\";\r\nimport {CuteInputControl} from \"@cute-widgets/base/abstract\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n// Invalid input type. Using one of these will throw an CuteInputUnsupportedTypeError.\r\nconst CUTE_INPUT_INVALID_TYPES = [\r\n 'button',\r\n 'checkbox',\r\n //'file',\r\n 'hidden',\r\n 'image',\r\n 'radio',\r\n //'range',\r\n 'reset',\r\n 'submit',\r\n];\r\n\r\n/** Object that can be used to configure the default options for the input. */\r\nexport interface CuteInputConfig {\r\n /** Whether disabled inputs should be interactive. */\r\n disabledInteractive?: boolean;\r\n}\r\n\r\n/** Injection token that can be used to provide the default options for the input. */\r\nexport const CUTE_INPUT_CONFIG = new InjectionToken<CuteInputConfig>('CUTE_INPUT_CONFIG');\r\n\r\nlet nextUniqueId = 0;\r\n\r\n/**\r\n * We must check whether the agent is Android because composition events\r\n * behave differently between iOS and Android.\r\n */\r\n// function _isAndroid(): boolean {\r\n// const userAgent = getDOM() ? getDOM().getUserAgent() : '';\r\n// return /android (\\d+)/.test(userAgent.toLowerCase());\r\n// }\r\n\r\n@Directive({\r\n selector: `\r\n input[cuteInput],\r\n textarea[cuteInput],\r\n select[cuteNativeControl],\r\n input[cuteNativeControl],\r\n textarea[cuteNativeControl],\r\n `,\r\n exportAs: 'cuteInput',\r\n host: {\r\n 'class': 'cute-input',\r\n '[class.form-control-plaintext]': 'plainText && _getReadonlyAttribute()==\"true\"',\r\n '[class.form-range]': 'type==\"range\"',\r\n '[class.form-control-color]': 'type==\"color\"',\r\n '[class.cute-input-server]': '_isServer',\r\n '[class.cute-form-field-textarea-control]': '_isInFormField && _isTextarea',\r\n '[class.cute-form-field-input-control]': '_isInFormField',\r\n '[class.cute-input-disabled-interactive]': 'disabledInteractive',\r\n '[class.cute-text-field__input]': '_isInFormField',\r\n '[class.cute-native-select-inline]': '_isInlineSelect()',\r\n // Native input properties that are overwritten by Angular inputs need to be synced with\r\n // the native input element. Otherwise, property bindings for those don't work.\r\n '[id]': 'id',\r\n '[disabled]': 'disabled && !disabledInteractive',\r\n '[required]': 'required',\r\n '[attr.name]': 'name || null',\r\n '[attr.readonly]': '_getReadonlyAttribute()',\r\n '[attr.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\r\n // Only mark the input as invalid for assistive technology if it has a value since the\r\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\r\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\r\n '[attr.aria-required]': 'required',\r\n // Native input properties that are overwritten by Angular inputs need to be synced with\r\n // the native input element. Otherwise, property bindings for those don't work.\r\n '[attr.id]': 'id',\r\n '(focus)': '_focusChanged(true)',\r\n '(blur)': '_focusChanged(false)',\r\n '(input)': '_onInput($event)',\r\n '(compositionstart)': '_compositionStart()',\r\n '(compositionend)': '_compositionEnd($any($event.target).value)',\r\n },\r\n providers: [\r\n {provide: CuteFormFieldControl, useExisting: CuteInput},\r\n ],\r\n standalone: true,\r\n})\r\nexport class CuteInput extends CuteInputControl\r\n implements CuteFormFieldControl<any>, OnChanges, OnDestroy, AfterViewInit, DoCheck\r\n{\r\n protected override _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n protected _platform = inject(Platform);\r\n readonly ngControl = inject(NgControl, {optional: true, self: true})!;\r\n private _autofillMonitor = inject(AutofillMonitor);\r\n private _ngZone = inject(NgZone);\r\n private _formField? = inject<CuteFormField>(CUTE_FORM_FIELD, {optional: true});\r\n private _valueFormatter? = inject(CUTE_INPUT_VALUE_FORMATTER, {optional: true, self: true});\r\n private _inputValuePredecessor = inject(CUTE_INPUT_VALUE_PREDECESSOR, {optional: true, self: true});\r\n\r\n protected _previousNativeValue: any;\r\n private _inputValueAccessor: {value: any} = {value: undefined};\r\n private readonly _signalBasedValueAccessor?: {value: WritableSignal<any>};\r\n private _previousPlaceholder: string | null = null;\r\n private _errorStateTracker: _ErrorStateTracker;\r\n private _config = inject(CUTE_INPUT_CONFIG, {optional: true});\r\n private _cleanupIosKeyup: (() => void) | undefined;\r\n private _cleanupWebkitWheel: (() => void) | undefined;\r\n\r\n private _destroyed$ = new Subject<void>();\r\n\r\n private readonly _compositionMode: boolean|null = false;\r\n\r\n /** Whether the user is creating a composition string (IME events). */\r\n private _composing = false;\r\n\r\n /** `aria-describedby` IDs assigned by the form field. */\r\n private _formFieldDescribedBy: string[] | undefined;\r\n\r\n /** Whether the component is being rendered on the server. */\r\n protected readonly _isServer: boolean;\r\n\r\n /** Whether the component is a native HTML select. */\r\n protected readonly _isNativeSelect: boolean;\r\n\r\n /** Whether the component is a textarea. */\r\n protected readonly _isTextarea: boolean;\r\n\r\n /** Whether the input is inside a form field. */\r\n protected readonly _isInFormField: boolean;\r\n\r\n /** Implemented as part of CuteFormFieldControl. */\r\n focused: boolean = false;\r\n\r\n /** Implemented as part of CuteFormFieldControl. */\r\n controlType: string = 'cute-input';\r\n\r\n /** Implemented as part of CuteFormFieldControl. */\r\n get controlElementRef(): ElementRef {return this._elementRef;}\r\n\r\n /** Implemented as part of CuteFormFieldControl. */\r\n autofilled = false;\r\n\r\n protected override generateId(): string {\r\n return `cute-input-${nextUniqueId++}`;\r\n }\r\n\r\n @HostBinding(\"class\")\r\n protected get classList(): string {\r\n\r\n if ([\"range\"].indexOf(this.type) >= 0) {\r\n return \"\";\r\n }\r\n\r\n let classes = (this._isNativeSelect ? \"form-select\" : \"form-control\"+(this.plainText?\"-plaintext\":\"\"));\r\n if (this.magnitude && this.magnitude !== \"middle\") {\r\n classes += \" \"+(this._isNativeSelect ? \"form-select\" : \"form-control\") + this.cssClassSizeSuffix;\r\n }\r\n return classes\r\n }\r\n\r\n /** Implemented as part of CuteFormFieldControl. */\r\n override setDisabledState(value: boolean|BooleanInput): boolean {\r\n const changed: boolean = super.setDisabledState(value, false);\r\n if (changed) {\r\n // Browsers may not fire the blur event if the input is disabled too quickly.\r\n // Reset from here to ensure that the element doesn't become stuck.\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n return changed;\r\n }\r\n\r\n /** Implemented as part of CuteFormFieldControl. */\r\n @Input() placeholder: string | undefined;\r\n\r\n /** Implemented as part of CuteFormFieldControl. */\r\n override get required(): boolean {\r\n return super.required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n override set required(value: BooleanInput) {\r\n super.required = coerceBooleanProperty(value);\r\n }\r\n\r\n /** Input element's relative size */\r\n @Input() magnitude: RelativeSize3 | undefined;\r\n\r\n /** Input type of the element. */\r\n @Input()\r\n get type(): string { return this._type; }\r\n set type(value: string) {\r\n const prevType = this._type;\r\n this._type = value || 'text';\r\n this._validateType();\r\n\r\n // When using Angular inputs, developers are no longer able to set the properties on the native\r\n // input element. To ensure that bindings for `type` work, we need to sync the setter\r\n // with the native property. Textarea elements don't support the type property or attribute.\r\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\r\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\r\n }\r\n if (this._type !== prevType) {\r\n this._ensureWheelDefaultBehavior();\r\n }\r\n }\r\n protected _type = 'text';\r\n\r\n /** An object used to control when error messages are shown. */\r\n @Input()\r\n get errorStateMatcher() { return this._errorStateTracker.matcher; }\r\n set errorStateMatcher(value: ErrorStateMatcher) {\r\n this._errorStateTracker.matcher = value;\r\n }\r\n\r\n /** Implemented as part of CuteFormFieldControl. */\r\n @Input('aria-describedby') userAriaDescribedBy: string | undefined;\r\n\r\n /** Implemented as part of CuteFormFieldControl. */\r\n @Input()\r\n get value(): string {\r\n return this._signalBasedValueAccessor\r\n ? this._signalBasedValueAccessor.value()\r\n : this._inputValueAccessor.value;\r\n }\r\n set value(value: any) {\r\n if (value !== this.value) {\r\n if (this._signalBasedValueAccessor) {\r\n this._signalBasedValueAccessor.value.set(value);\r\n } else {\r\n this._inputValueAccessor.value = value;\r\n }\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /** Whether the element is readonly. */\r\n @Input()\r\n get readonly(): boolean { return this._readonly; }\r\n set readonly(value: BooleanInput) {\r\n this._readonly = coerceBooleanProperty(value);\r\n }\r\n private _readonly = false;\r\n\r\n /** Whether the input should remain interactive when it is disabled. */\r\n @Input({transform: booleanAttribute})\r\n disabledInteractive: boolean = false;\r\n\r\n /** Whether the input control is styled as a plain text. Use it with `readonly` property. */\r\n @Input({transform: booleanAttribute})\r\n get plainText(): boolean {return this._plainText;}\r\n set plainText(value: boolean) {\r\n if (!this._isNativeSelect) {\r\n this._plainText = value;\r\n }\r\n }\r\n private _plainText: boolean = false;\r\n\r\n /** Whether the input is in an error state. */\r\n get errorState() { return this._errorStateTracker.errorState; }\r\n set errorState(value: boolean) { this._errorStateTracker.errorState = value; }\r\n\r\n /** Returns bootstrap's size suffix for CSS classes */\r\n get cssClassSizeSuffix(): string {\r\n if (this.magnitude == \"small\") {\r\n return \"-sm\";\r\n } else if (this.magnitude == \"large\") {\r\n return \"-lg\";\r\n }\r\n return \"\";\r\n }\r\n\r\n protected _neverEmptyInputTypes = [\r\n 'date',\r\n 'datetime',\r\n 'datetime-local',\r\n 'month',\r\n 'time',\r\n 'week',\r\n ].filter(t => getSupportedInputTypes().has(t));\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n const parentForm = inject(NgForm, {optional: true});\r\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\r\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\r\n const accessor = inject(CUTE_INPUT_VALUE_ACCESSOR, {optional: true, self: true});\r\n\r\n const element = this._elementRef.nativeElement;\r\n const nodeName = element.nodeName.toLowerCase();\r\n\r\n if (accessor) {\r\n if (isSignal(accessor.value)) {\r\n this._signalBasedValueAccessor = accessor;\r\n } else {\r\n this._inputValueAccessor = accessor;\r\n }\r\n } else {\r\n // If no input value accessor was explicitly specified, use the element as the input value\r\n // accessor.\r\n this._inputValueAccessor = element;\r\n }\r\n\r\n this._previousNativeValue = this.value;\r\n\r\n // Force setter to be called in case id was not specified.\r\n this.id = this.id;\r\n\r\n //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n // We are changing the valueAccessor from the DefaultValueAccessor object to our class!!!\r\n //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n // if (this.ngControl) {\r\n // // Note: we provide the value accessor through here, instead of\r\n // // the `providers` to avoid running into a circular import.\r\n // this.ngControl.valueAccessor = this;\r\n //\r\n // // This is a snippet code that we need to prevent the loss of functionality implemented in\r\n // // DefaultValueAccessor class.\r\n // this._compositionMode = inject(COMPOSITION_BUFFER_MODE, {optional: true});\r\n // if (this._compositionMode == null) {\r\n // this._compositionMode = !_isAndroid();\r\n // }\r\n // }\r\n //-------------------------------------------------------------------------------------\r\n\r\n // On some versions of iOS, the caret gets stuck in the wrong place when holding down the delete\r\n // key. In order to get around this, we need to \"jiggle\" the caret loose. Since this bug only\r\n // exists on iOS, we only bother to install the listener on iOS.\r\n if (this._platform.IOS) {\r\n this._ngZone.runOutsideAngular(() => {\r\n this._cleanupIosKeyup = this._renderer.listen(element, 'keyup', this._iOSKeyupListener);\r\n });\r\n }\r\n\r\n this._errorStateTracker = new _ErrorStateTracker(\r\n defaultErrorStateMatcher,\r\n this.ngControl,\r\n parentFormGroup,\r\n parentForm,\r\n this.stateChanges,\r\n );\r\n this._isServer = !this._platform.isBrowser;\r\n this._isNativeSelect = nodeName === 'select';\r\n this._isTextarea = nodeName === 'textarea';\r\n this._isInFormField = !!this._formField;\r\n this.disabledInteractive = this._config?.disabledInteractive || false;\r\n\r\n if (this._isNativeSelect) {\r\n this.controlType = (element as HTMLSelectElement).multiple\r\n ? 'cute-native-select-multiple'\r\n : 'cute-native-select';\r\n }\r\n\r\n if (this._signalBasedValueAccessor) {\r\n effect(() => {\r\n // Read the value so the effect can register the dependency.\r\n this._signalBasedValueAccessor!.value();\r\n this.stateChanges.next();\r\n });\r\n }\r\n //++\r\n // Promise.resolve().then(()=>{\r\n // this.ngControl?.valueChanges?.pipe(takeUntil(this._destroyed$)).subscribe((v)=> {\r\n // this.writeValue(v);\r\n // });\r\n // });\r\n //--\r\n }\r\n\r\n override registerOnChange(fn: (value: any) => void) {\r\n this._onChange = (value: any) => {\r\n if (this._inputValuePredecessor) {\r\n value = this._inputValuePredecessor.beforeOnChange(value);\r\n }\r\n fn(value);\r\n };\r\n }\r\n\r\n override writeValue(newValue: any): void {\r\n const element = this._nativeElement as HTMLInputElement;\r\n element.type = this.type;\r\n\r\n if (this.focused) {\r\n if (this._inputValuePredecessor) {\r\n newValue = this._inputValuePredecessor.beforeWriteValue(newValue);\r\n }\r\n } else {\r\n if (this._valueFormatter) {\r\n const srcValue = newValue;\r\n newValue = this._valueFormatter.format(newValue);\r\n if (srcValue !== newValue) {\r\n element.type = \"text\";\r\n }\r\n } else if (this._inputValuePredecessor) {\r\n newValue = this._inputValuePredecessor.beforeWriteValue(newValue);\r\n }\r\n }\r\n this.value = newValue ?? \"\";\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n if (this._platform.isBrowser) {\r\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\r\n this.autofilled = event.isAutofilled;\r\n this.stateChanges.next();\r\n });\r\n }\r\n }\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n this.stateChanges.next();\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n if (this._platform.isBrowser) {\r\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\r\n }\r\n\r\n this._cleanupIosKeyup?.();\r\n this._cleanupWebkitWheel?.();\r\n\r\n this._destroyed$.next();\r\n this._destroyed$.complete();\r\n\r\n }\r\n\r\n ngDoCheck() {\r\n if (this.ngControl) {\r\n // We need to re-evaluate this on every change detection cycle, because there are some\r\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\r\n // that whatever logic is in here has to be super lean, or we risk destroying the performance.\r\n this.updateErrorState();\r\n\r\n // Since the input isn't a `ControlValueAccessor`, we don't have a good way of knowing when\r\n // the disabled state has changed. We can't use the `ngControl.statusChanges`, because it\r\n // won't fire if the input is disabled with `emitEvents = false`, despite the input becoming\r\n // disabled.\r\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {\r\n this.disabled = this.ngControl.disabled;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n // We need to dirty-check the native element's value, because there are some cases where\r\n // we won't be notified when it changes (e.g., the consumer isn't using forms, or they're\r\n // updating the value using `emitEvent: false`).\r\n this._dirtyCheckNativeValue();\r\n\r\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\r\n // present or not depends on a query which is prone to \"changed after checked\" errors.\r\n this._dirtyCheckPlaceholder();\r\n }\r\n\r\n /** Refreshes the error state of the input. */\r\n updateErrorState() {\r\n this._errorStateTracker.updateErrorState();\r\n }\r\n\r\n /** Callback for the cases where the focused state of the input changes. */\r\n protected _focusChanged(isFocused: boolean) {\r\n if (isFocused === this.focused) {\r\n return;\r\n }\r\n\r\n const element = this._elementRef.nativeElement as HTMLInputElement;\r\n if (!this._isNativeSelect && isFocused && this.disabled && this.disabledInteractive) {\r\n // Focusing an input that has text will cause all the text to be selected. Clear it since\r\n // the user won't be able to change it. This is based on the internal implementation.\r\n if (element.type === 'number') {\r\n // setSelectionRange doesn't work on number inputs, so it needs to be set briefly to text.\r\n element.type = 'text';\r\n element.setSelectionRange(0, 0);\r\n element.type = 'number';\r\n } else {\r\n element.setSelectionRange(0, 0);\r\n }\r\n }\r\n\r\n this.focused = isFocused;\r\n\r\n if (!isFocused) {\r\n this._onTouched();\r\n }\r\n //++\r\n // if (this.ngControl) {\r\n // this.writeValue(this.ngControl.value);\r\n // }\r\n //--\r\n\r\n this.stateChanges.next();\r\n }\r\n\r\n protected _onInput(event: InputEvent) {\r\n // This is a noop function and is used to let Angular know whenever the value changes.\r\n // Angular will run new change detection each time the `input` event has been dispatched.\r\n // It's necessary that Angular recognizes the value change, because when floatingLabel\r\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\r\n // value changes and will not disappear.\r\n // Listening to the input event wouldn't be necessary when the input is using the\r\n // FormsModule or ReactiveFormsModule, because Angular forms also listen to input events.\r\n\r\n if (!this._compositionMode || (this._compositionMode && !this._composing)) {\r\n const inputElem = event.target as HTMLInputElement;\r\n this._onChange(inputElem.value);\r\n }\r\n }\r\n\r\n /** Does some manual dirty checking on the native input `value` property. */\r\n protected _dirtyCheckNativeValue() {\r\n const newValue = this._elementRef.nativeElement.value;\r\n\r\n if (this._previousNativeValue !== newValue) {\r\n this._previousNativeValue = newValue;\r\n //this.writeValue(newValue); //++ Don't use!!! `Datepicker` broking!\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\r\n private _dirtyCheckPlaceholder() {\r\n const placeholder = this._getPlaceholder();\r\n if (placeholder !== this._previousPlaceholder) {\r\n const element = this._elementRef.nativeElement;\r\n this._previousPlaceholder = placeholder;\r\n placeholder\r\n ? element.setAttribute('placeholder', placeholder)\r\n : element.removeAttribute('placeholder');\r\n }\r\n }\r\n\r\n /** Gets the current placeholder of the form field. */\r\n protected _getPlaceholder(): string | null {\r\n\r\n if (this._formField && this._formField._isFloatLabel) {\r\n // Bootstrap floating labels always NEED a `placeholder` attribute\r\n return this.placeholder || \" \";\r\n }\r\n\r\n return this.placeholder || null;\r\n }\r\n\r\n /** Make sure the input is a supported type. */\r\n protected _validateType() {\r\n if (CUTE_INPUT_INVALID_TYPES.indexOf(this._type) > -1 && isDevMode()) {\r\n throw getCuteInputUnsupportedTypeError(this._type);\r\n }\r\n }\r\n\r\n /** Checks whether the input type is one of the types that are never empty. */\r\n protected _isNeverEmpty() {\r\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\r\n }\r\n\r\n /** Checks whether the input is invalid based on the native validation. */\r\n protected _isBadInput() {\r\n // The `validity` property won't be present on platform-server.\r\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\r\n return validity && validity.badInput;\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n */\r\n get empty(): boolean {\r\n return (\r\n !this._isNeverEmpty() &&\r\n !this._elementRef.nativeElement.value &&\r\n !this._isBadInput() &&\r\n !this.autofilled\r\n );\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n */\r\n get shouldLabelFloat(): boolean {\r\n if (this._isNativeSelect) {\r\n // For a single-selection `<select>`, the label should float when the selected option has\r\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\r\n // overlapping the label with the options.\r\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\r\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\r\n\r\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\r\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\r\n return (\r\n this.focused ||\r\n selectElement.multiple ||\r\n !this.empty ||\r\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\r\n );\r\n } else {\r\n return (this.focused && !this.disabled) || !this.empty;\r\n }\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n */\r\n setDescribedByIds(ids: string[]) {\r\n const element = this._elementRef.nativeElement;\r\n const existingDescribedBy = element.getAttribute('aria-describedby');\r\n let toAssign: string[];\r\n\r\n // In some cases, there might be some `aria-describedby` IDs that were assigned directly,\r\n // like by the `AriaDescriber` (see #30011). Attempt to preserve them by taking the previous\r\n // attribute value and filtering out the IDs that came from the previous `setDescribedByIds`\r\n // call. Note the `|| ids` here allows us to avoid duplicating IDs on the first render.\r\n if (existingDescribedBy) {\r\n const exclude = this._formFieldDescribedBy || ids;\r\n toAssign = ids.concat(\r\n existingDescribedBy.split(' ').filter(id => id && !exclude.includes(id)),\r\n );\r\n } else {\r\n toAssign = ids;\r\n }\r\n\r\n this._formFieldDescribedBy = ids;\r\n\r\n if (toAssign.length) {\r\n element.setAttribute('aria-describedby', toAssign.join(' '));\r\n } else {\r\n element.removeAttribute('aria-describedby');\r\n }\r\n }\r\n\r\n /**\r\n * Implemented as part of CuteFormFieldControl.\r\n */\r\n onContainerClick() {\r\n // Do not re-focus the input element if the element is already focused. Otherwise, it can happen\r\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\r\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n /** Whether the form control is native select that is displayed inline. */\r\n _isInlineSelect(): boolean {\r\n const element = this._elementRef.nativeElement as HTMLSelectElement;\r\n return this._isNativeSelect && (element.multiple || element.size > 1);\r\n }\r\n\r\n private _iOSKeyupListener = (event: Event): void => {\r\n const el = event.target as HTMLInputElement;\r\n\r\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\r\n // indicate different things. If the value is 0, it means that the caret is at the start\r\n // of the input, whereas a value of `null` means that the input doesn't support\r\n // manipulating the selection range. Inputs that don't support setting the selection range\r\n // will throw an error, so we want to avoid calling `setSelectionRange` on them. See:\r\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\r\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\r\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\r\n // `1, 1` fixes it for the first time that you type text and\r\n // then hold delete. Toggling to `1, 1` and then back to\r\n // `0, 0` seems to completely fix it.\r\n el.setSelectionRange(1, 1);\r\n el.setSelectionRange(0, 0);\r\n }\r\n }\r\n\r\n private _webkitBlinkWheelListener = (): void => {\r\n // This is a noop function and is used to enable mouse wheel input\r\n // on number inputs\r\n // on blink and webkit browsers.\r\n };\r\n\r\n /**\r\n * In blink and webkit browsers, a focused number input does not increment or decrement its value\r\n * on mouse wheel interaction unless a wheel event listener is attached to it or one of its ancestors or a passive-wheel listener is attached somewhere in the DOM.\r\n * For example, Hitting a tooltip once enables the mouse wheel input for all number inputs as long as it exists.\r\n * In order to get reliable and intuitive behavior, we apply a wheel event on our own,\r\n * thus making sure increment and decrement by mouse wheel works every time.\r\n * @docs-private\r\n */\r\n private _ensureWheelDefaultBehavior(): void {\r\n this._cleanupWebkitWheel?.();\r\n\r\n if (this._type === 'number' && (this._platform.BLINK || this._platform.WEBKIT)) {\r\n this._cleanupWebkitWheel = this._renderer.listen(\r\n this._elementRef.nativeElement,\r\n 'wheel',\r\n this._webkitBlinkWheelListener,\r\n );\r\n }\r\n }\r\n\r\n /** Gets the value to set on the `readonly` attribute. */\r\n protected _getReadonlyAttribute(): string | null {\r\n if (this._isNativeSelect) {\r\n return null;\r\n }\r\n if (this.readonly || (this.disabled && this.disabledInteractive)) {\r\n return 'true';\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * This handler is only needed if DefaultValueAccessor is not applied.\r\n * @internal\r\n */\r\n protected _compositionStart(): void {\r\n this._composing = true;\r\n }\r\n\r\n /**\r\n * This handler is only needed if DefaultValueAccessor is not applied.\r\n * @internal\r\n */\r\n protected _compositionEnd(value: any): void {\r\n this._composing = false;\r\n this._compositionMode && this._onChange(value);\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteInput} from \"./input\";\r\nimport {CuteFormFieldModule} from \"@cute-widgets/base/form-field\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteInput,\r\n CuteFormFieldModule,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteInputModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import * as i0 from '@angular/core';
2
+ import { booleanAttribute, Input, ChangeDetectionStrategy, Component, ViewEncapsulation, NgModule } from '@angular/core';
3
+ import { CuteLayoutControl } from '@cute-widgets/base/abstract';
4
+ import { CommonModule } from '@angular/common';
5
+
6
+ /**
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
10
+ *
11
+ * You may not use this file except in compliance with the License
12
+ * that can be found at http://www.apache.org/licenses/LICENSE-2.0
13
+ */
14
+ /**
15
+ * A responsive, fixed-width container, meaning its `max-width` changes when the `breakpoint` input parameter is specified.
16
+ * After the breakpoint is reached, the content will scale up to the higher breakpoint(s).
17
+ */
18
+ class CuteContainer extends CuteLayoutControl {
19
+ constructor() {
20
+ super();
21
+ /** A full width container, spanning the entire width of the viewport. */
22
+ this.fluid = false;
23
+ }
24
+ generateId() { return ""; }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.15", type: CuteContainer, isStandalone: true, selector: "cute-container", inputs: { fluid: ["fluid", "fluid", booleanAttribute] }, host: { properties: { "class": "\"container\"+(fluid ? \"-fluid\" : (breakpoint ? \"-\"+breakpoint : \"\"))" }, classAttribute: "cute-container" }, exportAs: ["cuteContainer"], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteContainer, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'cute-container', exportAs: 'cuteContainer', template: '<ng-content></ng-content>', standalone: true, host: {
31
+ 'class': 'cute-container',
32
+ '[class]': '"container"+(fluid ? "-fluid" : (breakpoint ? "-"+breakpoint : ""))',
33
+ //'[style.display]': "'block'",
34
+ //'style': '--bs-gutter-x: 0; --bs-gutter-y: 0;', // disable default gutter values for container's
35
+ }, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}\n"] }]
36
+ }], ctorParameters: () => [], propDecorators: { fluid: [{
37
+ type: Input,
38
+ args: [{ transform: booleanAttribute }]
39
+ }] } });
40
+
41
+ /**
42
+ * @license Apache-2.0
43
+ *
44
+ * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
45
+ *
46
+ * You may not use this file except in compliance with the License
47
+ * that can be found at http://www.apache.org/licenses/LICENSE-2.0
48
+ */
49
+ class CutePageHeader /* extends ... */ {
50
+ constructor() {
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CutePageHeader /* extends ... */, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CutePageHeader /* extends ... */, isStandalone: true, selector: "cute-page-header", host: { classAttribute: "cute-page-header" }, exportAs: ["cutePageHeader"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".cute-page-header{position:fixed;top:0;left:0;right:0;z-index:2}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CutePageHeader /* extends ... */, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'cute-page-header', template: '<ng-content></ng-content>', exportAs: 'cutePageHeader', host: {
58
+ 'class': 'cute-page-header'
59
+ }, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".cute-page-header{position:fixed;top:0;left:0;right:0;z-index:2}\n"] }]
60
+ }], ctorParameters: () => [] });
61
+
62
+ /**
63
+ * @license Apache-2.0
64
+ *
65
+ * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
66
+ *
67
+ * You may not use this file except in compliance with the License
68
+ * that can be found at http://www.apache.org/licenses/LICENSE-2.0
69
+ */
70
+ const TYPES = [
71
+ CuteContainer,
72
+ CutePageHeader
73
+ ];
74
+ class CuteContainerModule {
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
76
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteContainerModule, imports: [CommonModule, CuteContainer,
77
+ CutePageHeader], exports: [CuteContainer,
78
+ CutePageHeader] }); }
79
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteContainerModule, imports: [CommonModule] }); }
80
+ }
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteContainerModule, decorators: [{
82
+ type: NgModule,
83
+ args: [{
84
+ imports: [CommonModule, ...TYPES],
85
+ exports: TYPES,
86
+ declarations: [],
87
+ }]
88
+ }] });
89
+
90
+ /**
91
+ * Generated bundle index. Do not edit.
92
+ */
93
+
94
+ export { CuteContainer, CuteContainerModule, CutePageHeader };
95
+ //# sourceMappingURL=cute-widgets-base-layout-container.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cute-widgets-base-layout-container.mjs","sources":["../../../../projects/cute-widgets/base/layout/container/src/container.ts","../../../../projects/cute-widgets/base/layout/container/src/page-header.ts","../../../../projects/cute-widgets/base/layout/container/src/container.module.ts","../../../../projects/cute-widgets/base/layout/container/cute-widgets-base-layout-container.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {booleanAttribute, ChangeDetectionStrategy, Component, Input} from \"@angular/core\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\n\r\n/**\r\n * A responsive, fixed-width container, meaning its `max-width` changes when the `breakpoint` input parameter is specified.\r\n * After the breakpoint is reached, the content will scale up to the higher breakpoint(s).\r\n */\r\n@Component({\r\n selector: 'cute-container',\r\n exportAs: 'cuteContainer',\r\n template: '<ng-content></ng-content>',\r\n styles: [`\r\n :host {\r\n display: block;\r\n }\r\n `],\r\n standalone: true,\r\n host: {\r\n 'class': 'cute-container',\r\n '[class]': '\"container\"+(fluid ? \"-fluid\" : (breakpoint ? \"-\"+breakpoint : \"\"))',\r\n //'[style.display]': \"'block'\",\r\n //'style': '--bs-gutter-x: 0; --bs-gutter-y: 0;', // disable default gutter values for container's\r\n },\r\n //encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CuteContainer extends CuteLayoutControl {\r\n\r\n /** A full width container, spanning the entire width of the viewport. */\r\n @Input({transform: booleanAttribute}) fluid: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {return \"\";}\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'cute-page-header',\r\n template: '<ng-content></ng-content>',\r\n styles: [`\r\n .cute-page-header {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: 2;\r\n }\r\n `],\r\n exportAs: 'cutePageHeader',\r\n host: {\r\n 'class': 'cute-page-header'\r\n },\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CutePageHeader /* extends ... */ {\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteContainer} from \"./container\";\r\nimport {CutePageHeader} from './page-header';\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteContainer,\r\n CutePageHeader\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteContainerModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ import * as i0 from '@angular/core';
2
+ import { numberAttribute, Input, Directive, NgModule } from '@angular/core';
3
+ import { CuteLayoutControl } from '@cute-widgets/base/abstract';
4
+ import { CommonModule } from '@angular/common';
5
+
6
+ /**
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
10
+ *
11
+ * You may not use this file except in compliance with the License
12
+ * that can be found at http://www.apache.org/licenses/LICENSE-2.0
13
+ */
14
+ /**
15
+ * Stacks offer a shortcut for applying a number of flexbox properties to quickly and easily create flex layouts.
16
+ */
17
+ class CuteStack extends CuteLayoutControl {
18
+ /** Direction of the child components. */
19
+ get direction() { return this._direction; }
20
+ ;
21
+ set direction(value) {
22
+ this.setDirection(value);
23
+ }
24
+ /** Spacing level (0..5) between the child components. */
25
+ get gap() { return this._gap; }
26
+ set gap(value) {
27
+ const MAX_GAP = 5;
28
+ value = Math.round(value);
29
+ this._gap = Math.min(Math.max(value, 0), MAX_GAP);
30
+ }
31
+ constructor() {
32
+ super();
33
+ this._direction = "column";
34
+ this._gap = 0;
35
+ }
36
+ setDirection(value) {
37
+ this._direction = value;
38
+ }
39
+ generateId() {
40
+ return ""; /* no auto */
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStack, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteStack, isStandalone: true, selector: "cute-stack", inputs: { direction: "direction", gap: ["gap", "gap", numberAttribute] }, host: { properties: { "class": "(direction=='column'?'v':'h')+'stack gap-'+gap", "attr.gap": "null" } }, exportAs: ["cuteStack"], usesInheritance: true, ngImport: i0 }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStack, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ selector: 'cute-stack',
49
+ exportAs: 'cuteStack',
50
+ standalone: true,
51
+ host: {
52
+ '[class]': "(direction=='column'?'v':'h')+'stack gap-'+gap",
53
+ '[attr.gap]': 'null',
54
+ }
55
+ }]
56
+ }], ctorParameters: () => [], propDecorators: { direction: [{
57
+ type: Input
58
+ }], gap: [{
59
+ type: Input,
60
+ args: [{ transform: numberAttribute }]
61
+ }] } });
62
+
63
+ /**
64
+ * @license Apache-2.0
65
+ *
66
+ * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
67
+ *
68
+ * You may not use this file except in compliance with the License
69
+ * that can be found at http://www.apache.org/licenses/LICENSE-2.0
70
+ */
71
+ /**
72
+ * Use for horizontal layouts. Stacked items are vertically centered by default and only take up their necessary width.
73
+ */
74
+ class CuteHStack extends CuteStack {
75
+ constructor() {
76
+ super();
77
+ this._direction = "row";
78
+ }
79
+ setDirection(value) {
80
+ // do nothing
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteHStack, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
83
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteHStack, isStandalone: true, selector: "cute-hstack", exportAs: ["cuteStack"], usesInheritance: true, ngImport: i0 }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteHStack, decorators: [{
86
+ type: Directive,
87
+ args: [{
88
+ selector: 'cute-hstack',
89
+ exportAs: "cuteStack",
90
+ standalone: true,
91
+ }]
92
+ }], ctorParameters: () => [] });
93
+
94
+ /**
95
+ * @license Apache-2.0
96
+ *
97
+ * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
98
+ *
99
+ * You may not use this file except in compliance with the License
100
+ * that can be found at http://www.apache.org/licenses/LICENSE-2.0
101
+ */
102
+ /**
103
+ * Use to create vertical layouts. Stacked items are full-width by default.
104
+ */
105
+ class CuteVStack extends CuteStack {
106
+ constructor() {
107
+ super();
108
+ this._direction = "column";
109
+ }
110
+ setDirection(value) {
111
+ // do nothing
112
+ }
113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteVStack, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
114
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteVStack, isStandalone: true, selector: "cute-vstack", exportAs: ["cuteStack"], usesInheritance: true, ngImport: i0 }); }
115
+ }
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteVStack, decorators: [{
117
+ type: Directive,
118
+ args: [{
119
+ selector: 'cute-vstack',
120
+ exportAs: "cuteStack",
121
+ standalone: true,
122
+ }]
123
+ }], ctorParameters: () => [] });
124
+
125
+ /**
126
+ * @license Apache-2.0
127
+ *
128
+ * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
129
+ *
130
+ * You may not use this file except in compliance with the License
131
+ * that can be found at http://www.apache.org/licenses/LICENSE-2.0
132
+ */
133
+ class CuteStackModule {
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStackModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
135
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteStackModule, imports: [CommonModule,
136
+ CuteStack,
137
+ CuteVStack,
138
+ CuteHStack], exports: [CuteStack,
139
+ CuteVStack,
140
+ CuteHStack] }); }
141
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStackModule, imports: [CommonModule] }); }
142
+ }
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStackModule, decorators: [{
144
+ type: NgModule,
145
+ args: [{
146
+ declarations: [],
147
+ imports: [
148
+ CommonModule,
149
+ CuteStack,
150
+ CuteVStack,
151
+ CuteHStack,
152
+ ],
153
+ exports: [
154
+ CuteStack,
155
+ CuteVStack,
156
+ CuteHStack,
157
+ ]
158
+ }]
159
+ }] });
160
+
161
+ /**
162
+ * Generated bundle index. Do not edit.
163
+ */
164
+
165
+ export { CuteHStack, CuteStack, CuteStackModule, CuteVStack };
166
+ //# sourceMappingURL=cute-widgets-base-layout-stack.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cute-widgets-base-layout-stack.mjs","sources":["../../../../projects/cute-widgets/base/layout/stack/src/stack.directive.ts","../../../../projects/cute-widgets/base/layout/stack/src/hstack.directive.ts","../../../../projects/cute-widgets/base/layout/stack/src/vstack.directive.ts","../../../../projects/cute-widgets/base/layout/stack/src/stack.module.ts","../../../../projects/cute-widgets/base/layout/stack/cute-widgets-base-layout-stack.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {Directive, Input, numberAttribute} from \"@angular/core\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {LayoutDirection} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Stacks offer a shortcut for applying a number of flexbox properties to quickly and easily create flex layouts.\r\n */\r\n@Directive({\r\n selector: 'cute-stack',\r\n exportAs: 'cuteStack',\r\n standalone: true,\r\n host: {\r\n '[class]': \"(direction=='column'?'v':'h')+'stack gap-'+gap\",\r\n '[attr.gap]': 'null',\r\n }\r\n})\r\nexport class CuteStack extends CuteLayoutControl {\r\n\r\n /** Direction of the child components. */\r\n @Input()\r\n get direction(): LayoutDirection {return this._direction};\r\n set direction(value: LayoutDirection) {\r\n this.setDirection(value);\r\n }\r\n protected _direction: LayoutDirection = \"column\";\r\n\r\n /** Spacing level (0..5) between the child components. */\r\n @Input({transform: numberAttribute})\r\n get gap(): number {return this._gap;}\r\n set gap(value: number) {\r\n const MAX_GAP= 5;\r\n value = Math.round(value);\r\n this._gap = Math.min(Math.max(value, 0), MAX_GAP);\r\n }\r\n private _gap:number = 0;\r\n\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected setDirection(value: LayoutDirection): void {\r\n this._direction = value;\r\n }\r\n\r\n protected override generateId(): string {\r\n return \"\"; /* no auto */\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {Directive} from \"@angular/core\";\r\nimport {LayoutDirection} from \"@cute-widgets/base/core\";\r\nimport {CuteStack} from \"./stack.directive\";\r\n\r\n/**\r\n * Use for horizontal layouts. Stacked items are vertically centered by default and only take up their necessary width.\r\n */\r\n@Directive({\r\n selector: 'cute-hstack',\r\n exportAs: \"cuteStack\",\r\n standalone: true,\r\n})\r\nexport class CuteHStack extends CuteStack {\r\n\r\n constructor() {\r\n super();\r\n this._direction = \"row\";\r\n }\r\n\r\n protected override setDirection(value: LayoutDirection) {\r\n // do nothing\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {Directive} from \"@angular/core\";\r\nimport {CuteStack} from \"./stack.directive\";\r\nimport {LayoutDirection} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Use to create vertical layouts. Stacked items are full-width by default.\r\n */\r\n@Directive({\r\n selector: 'cute-vstack',\r\n exportAs: \"cuteStack\",\r\n standalone: true,\r\n})\r\nexport class CuteVStack extends CuteStack {\r\n\r\n constructor() {\r\n super();\r\n this._direction = \"column\";\r\n }\r\n\r\n protected override setDirection(value: LayoutDirection) {\r\n // do nothing\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {CuteStack} from \"./stack.directive\";\r\nimport {CuteVStack} from \"./vstack.directive\";\r\nimport {CuteHStack} from \"./hstack.directive\";\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n CuteStack,\r\n CuteVStack,\r\n CuteHStack,\r\n ],\r\n exports: [\r\n CuteStack,\r\n CuteVStack,\r\n CuteHStack,\r\n ]\r\n})\r\nexport class CuteStackModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}