@aquera/nile-elements 0.0.4-8 → 0.0.5-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 (186) hide show
  1. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/index.d.ts +2 -0
  2. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/index.js +2 -0
  3. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/index.js.map +1 -1
  4. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-error-message/nile-error-message.css.js +42 -45
  5. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-error-message/nile-error-message.css.js.map +1 -1
  6. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-error-message/nile-error-message.d.ts +13 -5
  7. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-error-message/nile-error-message.js +54 -84
  8. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-error-message/nile-error-message.js.map +1 -1
  9. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-link/nile-link.css.js +2 -0
  10. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-link/nile-link.css.js.map +1 -1
  11. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button/index.d.ts +1 -0
  12. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button/index.js +2 -0
  13. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button/index.js.map +1 -0
  14. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button/nile-radio-button.css.d.ts +12 -0
  15. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button/nile-radio-button.css.js +173 -0
  16. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button/nile-radio-button.css.js.map +1 -0
  17. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button/nile-radio-button.d.ts +57 -0
  18. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button/nile-radio-button.js +145 -0
  19. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button/nile-radio-button.js.map +1 -0
  20. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button-group/index.d.ts +1 -0
  21. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button-group/index.js +2 -0
  22. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button-group/index.js.map +1 -0
  23. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button-group/nile-radio-button-group.css.d.ts +12 -0
  24. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button-group/nile-radio-button-group.css.js +70 -0
  25. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button-group/nile-radio-button-group.css.js.map +1 -0
  26. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button-group/nile-radio-button-group.d.ts +66 -0
  27. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button-group/nile-radio-button-group.js +308 -0
  28. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-radio-button-group/nile-radio-button-group.js.map +1 -0
  29. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-select/nile-select.js +2 -2
  30. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-select/nile-select.js.map +1 -1
  31. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/tsconfig.tsbuildinfo +1 -1
  32. package/dist/{index-cd83c5c8.cjs.js → index-0da7021a.cjs.js} +2 -2
  33. package/dist/{index-cd83c5c8.cjs.js.map → index-0da7021a.cjs.js.map} +1 -1
  34. package/dist/index.cjs.js +1 -1
  35. package/dist/index.esm.js +1 -1
  36. package/dist/index.iife.js +432 -143
  37. package/dist/nile-auto-complete/index.cjs.js +1 -1
  38. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  39. package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js +1 -1
  40. package/dist/nile-button/index.cjs.js +1 -1
  41. package/dist/nile-button/nile-button.cjs.js +1 -1
  42. package/dist/nile-button/nile-button.css.cjs.js +1 -1
  43. package/dist/nile-calendar/index.cjs.js +1 -1
  44. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  45. package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
  46. package/dist/nile-checkbox/index.cjs.js +1 -1
  47. package/dist/nile-checkbox/nile-checkbox.cjs.js +1 -1
  48. package/dist/nile-checkbox/nile-checkbox.css.cjs.js +1 -1
  49. package/dist/nile-chip/index.cjs.js +1 -1
  50. package/dist/nile-chip/nile-chip.cjs.js +1 -1
  51. package/dist/nile-chip/nile-chip.css.cjs.js +1 -1
  52. package/dist/nile-date-picker/index.cjs.js +1 -1
  53. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  54. package/dist/nile-date-picker/nile-date-picker.css.cjs.js +1 -1
  55. package/dist/nile-drawer/index.cjs.js +1 -1
  56. package/dist/nile-drawer/nile-drawer.css.cjs.js +1 -1
  57. package/dist/nile-dropdown/index.cjs.js +1 -1
  58. package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
  59. package/dist/nile-dropdown/nile-dropdown.css.cjs.js +1 -1
  60. package/dist/nile-error-message/index.cjs.js +1 -1
  61. package/dist/nile-error-message/nile-error-message.cjs.js +1 -1
  62. package/dist/nile-error-message/nile-error-message.cjs.js.map +1 -1
  63. package/dist/nile-error-message/nile-error-message.css.cjs.js +1 -1
  64. package/dist/nile-error-message/nile-error-message.css.cjs.js.map +1 -1
  65. package/dist/nile-error-message/nile-error-message.css.esm.js +42 -45
  66. package/dist/nile-error-message/nile-error-message.esm.js +26 -28
  67. package/dist/nile-footer/index.cjs.js +1 -1
  68. package/dist/nile-footer/nile-footer.css.cjs.js +1 -1
  69. package/dist/nile-form-error-message/index.cjs.js +1 -1
  70. package/dist/nile-form-error-message/nile-form-error-message.cjs.js +1 -1
  71. package/dist/nile-form-error-message/nile-form-error-message.css.cjs.js +1 -1
  72. package/dist/nile-form-help-text/index.cjs.js +1 -1
  73. package/dist/nile-form-help-text/nile-form-help-text.cjs.js +1 -1
  74. package/dist/nile-form-help-text/nile-form-help-text.css.cjs.js +1 -1
  75. package/dist/nile-icon-button/index.cjs.js +1 -1
  76. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  77. package/dist/nile-icon-button/nile-icon-button.css.cjs.js +1 -1
  78. package/dist/nile-input/index.cjs.js +1 -1
  79. package/dist/nile-input/nile-input.cjs.js +1 -1
  80. package/dist/nile-input/nile-input.css.cjs.js +1 -1
  81. package/dist/nile-link/index.cjs.js +1 -1
  82. package/dist/nile-link/nile-link.cjs.js +1 -1
  83. package/dist/nile-link/nile-link.css.cjs.js +1 -1
  84. package/dist/nile-link/nile-link.css.cjs.js.map +1 -1
  85. package/dist/nile-link/nile-link.css.esm.js +2 -0
  86. package/dist/nile-loader/index.cjs.js +1 -1
  87. package/dist/nile-loader/nile-loader.cjs.js +1 -1
  88. package/dist/nile-menu/index.cjs.js +1 -1
  89. package/dist/nile-menu/nile-menu.cjs.js +1 -1
  90. package/dist/nile-menu/nile-menu.css.cjs.js +1 -1
  91. package/dist/nile-menu-item/index.cjs.js +1 -1
  92. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  93. package/dist/nile-menu-item/nile-menu-item.css.cjs.js +1 -1
  94. package/dist/nile-option/index.cjs.js +1 -1
  95. package/dist/nile-option/nile-option.cjs.js +1 -1
  96. package/dist/nile-option/nile-option.css.cjs.js +1 -1
  97. package/dist/nile-popup/index.cjs.js +1 -1
  98. package/dist/nile-popup/nile-popup.cjs.js +1 -1
  99. package/dist/nile-popup/nile-popup.css.cjs.js +1 -1
  100. package/dist/nile-progress-bar/index.cjs.js +1 -1
  101. package/dist/nile-progress-bar/nile-progress-bar.cjs.js +1 -1
  102. package/dist/nile-radio/index.cjs.js +1 -1
  103. package/dist/nile-radio/nile-radio.cjs.js +1 -1
  104. package/dist/nile-radio/nile-radio.css.cjs.js +1 -1
  105. package/dist/nile-radio-button/index.cjs.js +2 -0
  106. package/dist/nile-radio-button/index.cjs.js.map +1 -0
  107. package/dist/nile-radio-button/index.esm.js +1 -0
  108. package/dist/nile-radio-button/nile-radio-button.cjs.js +2 -0
  109. package/dist/nile-radio-button/nile-radio-button.cjs.js.map +1 -0
  110. package/dist/nile-radio-button/nile-radio-button.css.cjs.js +2 -0
  111. package/dist/nile-radio-button/nile-radio-button.css.cjs.js.map +1 -0
  112. package/dist/nile-radio-button/nile-radio-button.css.esm.js +161 -0
  113. package/dist/nile-radio-button/nile-radio-button.esm.js +21 -0
  114. package/dist/nile-radio-button-group/index.cjs.js +2 -0
  115. package/dist/nile-radio-button-group/index.cjs.js.map +1 -0
  116. package/dist/nile-radio-button-group/index.esm.js +1 -0
  117. package/dist/nile-radio-button-group/nile-radio-button-group.cjs.js +2 -0
  118. package/dist/nile-radio-button-group/nile-radio-button-group.cjs.js.map +1 -0
  119. package/dist/nile-radio-button-group/nile-radio-button-group.css.cjs.js +2 -0
  120. package/dist/nile-radio-button-group/nile-radio-button-group.css.cjs.js.map +1 -0
  121. package/dist/nile-radio-button-group/nile-radio-button-group.css.esm.js +58 -0
  122. package/dist/nile-radio-button-group/nile-radio-button-group.esm.js +56 -0
  123. package/dist/nile-select/index.cjs.js +1 -1
  124. package/dist/nile-select/nile-select.cjs.js +1 -1
  125. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  126. package/dist/nile-select/nile-select.css.cjs.js +1 -1
  127. package/dist/nile-select/nile-select.esm.js +1 -1
  128. package/dist/nile-slide-toggle/index.cjs.js +1 -1
  129. package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js +1 -1
  130. package/dist/nile-spinner/index.cjs.js +1 -1
  131. package/dist/nile-spinner/nile-spinner.cjs.js +1 -1
  132. package/dist/nile-spinner/nile-spinner.css.cjs.js +1 -1
  133. package/dist/nile-tag/index.cjs.js +1 -1
  134. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  135. package/dist/nile-tag/nile-tag.css.cjs.js +1 -1
  136. package/dist/nile-textarea/index.cjs.js +1 -1
  137. package/dist/nile-textarea/nile-textarea.cjs.js +1 -1
  138. package/dist/nile-textarea/nile-textarea.css.cjs.js +1 -1
  139. package/dist/nile-toolbar/index.cjs.js +1 -1
  140. package/dist/nile-toolbar/nile-toolbar.css.cjs.js +1 -1
  141. package/dist/nile-tooltip/index.cjs.js +1 -1
  142. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  143. package/dist/nile-tooltip/nile-tooltip.css.cjs.js +1 -1
  144. package/dist/src/index.d.ts +2 -0
  145. package/dist/src/index.js +2 -0
  146. package/dist/src/index.js.map +1 -1
  147. package/dist/src/nile-error-message/nile-error-message.css.js +42 -45
  148. package/dist/src/nile-error-message/nile-error-message.css.js.map +1 -1
  149. package/dist/src/nile-error-message/nile-error-message.d.ts +13 -5
  150. package/dist/src/nile-error-message/nile-error-message.js +54 -84
  151. package/dist/src/nile-error-message/nile-error-message.js.map +1 -1
  152. package/dist/src/nile-link/nile-link.css.js +2 -0
  153. package/dist/src/nile-link/nile-link.css.js.map +1 -1
  154. package/dist/src/nile-radio-button/index.d.ts +1 -0
  155. package/dist/src/nile-radio-button/index.js +2 -0
  156. package/dist/src/nile-radio-button/index.js.map +1 -0
  157. package/dist/src/nile-radio-button/nile-radio-button.css.d.ts +12 -0
  158. package/dist/src/nile-radio-button/nile-radio-button.css.js +173 -0
  159. package/dist/src/nile-radio-button/nile-radio-button.css.js.map +1 -0
  160. package/dist/src/nile-radio-button/nile-radio-button.d.ts +57 -0
  161. package/dist/src/nile-radio-button/nile-radio-button.js +145 -0
  162. package/dist/src/nile-radio-button/nile-radio-button.js.map +1 -0
  163. package/dist/src/nile-radio-button-group/index.d.ts +1 -0
  164. package/dist/src/nile-radio-button-group/index.js +2 -0
  165. package/dist/src/nile-radio-button-group/index.js.map +1 -0
  166. package/dist/src/nile-radio-button-group/nile-radio-button-group.css.d.ts +12 -0
  167. package/dist/src/nile-radio-button-group/nile-radio-button-group.css.js +70 -0
  168. package/dist/src/nile-radio-button-group/nile-radio-button-group.css.js.map +1 -0
  169. package/dist/src/nile-radio-button-group/nile-radio-button-group.d.ts +66 -0
  170. package/dist/src/nile-radio-button-group/nile-radio-button-group.js +308 -0
  171. package/dist/src/nile-radio-button-group/nile-radio-button-group.js.map +1 -0
  172. package/dist/src/nile-select/nile-select.js +2 -2
  173. package/dist/src/nile-select/nile-select.js.map +1 -1
  174. package/dist/tsconfig.tsbuildinfo +1 -1
  175. package/package.json +1 -1
  176. package/src/index.ts +2 -0
  177. package/src/nile-error-message/nile-error-message.css.ts +42 -45
  178. package/src/nile-error-message/nile-error-message.ts +52 -90
  179. package/src/nile-link/nile-link.css.ts +2 -0
  180. package/src/nile-radio-button/index.ts +1 -0
  181. package/src/nile-radio-button/nile-radio-button.css.ts +175 -0
  182. package/src/nile-radio-button/nile-radio-button.ts +151 -0
  183. package/src/nile-radio-button-group/index.ts +1 -0
  184. package/src/nile-radio-button-group/nile-radio-button-group.css.ts +72 -0
  185. package/src/nile-radio-button-group/nile-radio-button-group.ts +337 -0
  186. package/src/nile-select/nile-select.ts +2 -2
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent nile-elements following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "nile-elements",
6
- "version": "0.0.4-8",
6
+ "version": "0.0.5-1",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
package/src/index.ts CHANGED
@@ -30,3 +30,5 @@ export { NileFormErrorMessage } from './nile-form-error-message';
30
30
  export { NileFormHelpText } from './nile-form-help-text';
31
31
  export { NileCalendar } from './nile-calendar';
32
32
  export { NileLink} from './nile-link';
33
+ export { NileRadioButton } from './nile-radio-button';
34
+ export { NileRadioButtonGroup } from './nile-radio-button-group';
@@ -12,76 +12,73 @@ import { css } from 'lit-element';
12
12
  */
13
13
  export const styles = css`
14
14
  :host {
15
- width:100%;
16
15
  }
17
16
 
18
17
  .nile-error-message {
19
18
  width: 100%;
19
+ word-break: break-all;
20
20
  font-size: var(--nile-font-size-small);
21
+ letter-spacing: 0.2px;
21
22
  font-weight: var(--nile-font-weight-regular);
22
23
  line-height: var(--nile-font-size-small);
23
- border: 1px solid var(--nile-colors-red-500);
24
- border-left: 6px solid var(--nile-colors-red-500);
25
- border-radius: var(--nile-radius-base-standard);
26
- background: var(--nile-colors-red-100);
27
24
  }
28
25
 
29
- .nile-error-message__info {
26
+ .nile-error-message__error {
30
27
  color: var(--nile-colors-red-500);
31
- padding: 8px;
32
- display: flex;
33
- align-items: center;
28
+ word-break: break-word;
29
+ }
30
+
31
+ .nile-error-message__response {
32
+ color: var(--nile-colors-dark-500);
34
33
  }
35
34
 
36
- .nile-error-message__icon,
37
- .nile-error-message__arrow {
35
+ .nile-error-message__icon {
38
36
  vertical-align: middle;
39
- margin-right: 6px;
40
- transition: transform 0.3s ease-in-out;
37
+ margin-right:2px;
41
38
  }
42
39
 
43
- .nile-error-message__expandable {
40
+ .nile-error-message__more-button {
41
+ color: var(--nile-colors-primary-600);
44
42
  cursor: pointer;
45
- overflow: hidden;
43
+ word-break: break-word;
46
44
  }
47
45
 
48
- .nile-error-message__content {
49
- display: flex;
50
- align-items: flex-start;
51
- padding: 8px 12px;
46
+ .nile-error-message__response-expanded {
47
+ height: auto;
48
+ border: 1px solid var(--nile-colors-red-500);
49
+ border-left: 6px solid var(--nile-colors-red-500);
50
+ border-radius: 4px;
51
+ margin-top: 12px;
52
+ padding: 12px;
53
+ background: var(--nile-colors-neutral-100);
52
54
  }
53
55
 
54
- .nile-error-message__expandable.bordered {
55
- border-top: 1px solid var(--nile-colors-neutral-500);
56
+ .nile-error-message__response-expanded {
57
+ max-height: 100px;
58
+ overflow-y: auto;
59
+ border: 1px solid var(--nile-colors-red-500);
60
+ border-left: 6px solid var(--nile-colors-red-500);
61
+ border-radius: 4px;
62
+ margin-top: 12px;
63
+ padding: 12px;
64
+ background: var(--nile-colors-neutral-100);
65
+ transition: max-height 0.3s ease-in-out;
66
+ flex-shrink: 0;
56
67
  }
57
68
 
58
- .nile-error-message__summary {
59
- white-space: nowrap;
69
+ .nile-error-message__response-expanded.collapsed {
70
+ max-height: 0;
60
71
  overflow: hidden;
61
- text-overflow: ellipsis;
62
- transition: height 0.3s ease-in-out, white-space 1s ease-in-out;
63
- height: 14px;
64
- }
65
-
66
- .nile-error-message__expandable.expanded .nile-error-message__summary {
67
- white-space: normal;
68
- max-height: 6em;
69
- overflow-y: scroll;
70
- }
71
-
72
- .nile-error-message__expandable.expanded
73
- .nile-error-message__summary::-webkit-scrollbar {
74
- width: 8px;
75
- }
76
-
77
- .nile-error-message__expandable.expanded
78
- .nile-error-message__summary::-webkit-scrollbar-thumb {
79
- border-radius: 20px;
80
- background: rgba(148, 159, 184, 0.25);
72
+ transition: max-height 0.3s ease-in-out;
73
+ visibility: hidden;
74
+ padding: 0 12px;
81
75
  }
82
76
 
83
- .nile-error-message__expandable.expanded .nile-error-message__arrow {
84
- transform: rotate(90deg);
77
+ .nile-error-message__response-expanded.expanded {
78
+ max-height: 100px;
79
+ transition: max-height 0.3s ease-in-out;
80
+ visibility: visible;
81
+ padding: 12px;
85
82
  }
86
83
  `;
87
84
 
@@ -8,13 +8,6 @@ import {
8
8
  import { customElement } from 'lit/decorators.js';
9
9
  import { styles } from './nile-error-message.css';
10
10
 
11
- const convertToStringArray = (value: any): Array<string> => {
12
- if (Array.isArray(value)) {
13
- return value.map(item => String(item));
14
- }
15
- return [];
16
- };
17
-
18
11
  /**
19
12
  * A custom error message component that displays error information to the user.
20
13
  * @customElement nile-error-message
@@ -25,100 +18,69 @@ export class NileErrorMessage extends LitElement {
25
18
  return [styles];
26
19
  }
27
20
 
28
- @property({
29
- type: Array,
30
- attribute: 'error-messages',
31
- hasChanged: (newVal, oldVal) =>
32
- JSON.stringify(newVal) !== JSON.stringify(oldVal), // Optional: to detect deep changes
33
- converter: {
34
- toAttribute: value => JSON.stringify(value),
35
- fromAttribute: value => convertToStringArray(JSON.parse(value || '[]')),
36
- },
37
- })
38
- errorMessages: Array<string> = [];
21
+ // Represents the error message to be displayed to the user.
22
+ @property({ type: String })
23
+ errorMessage: string = '';
39
24
 
40
- @property({ type: Number })
41
- expandedIndex: number | null = null;
25
+ // Represents additional details about the error, like stack trace or other info.
26
+ @property({ type: String })
27
+ errorResponse: string;
42
28
 
43
- expandText(index: number, target: any) {
44
- const element = target.querySelector('.nile-error-message__summary');
45
- const originalHeight = element.clientHeight;
46
- element.style.whiteSpace = 'normal';
47
- element.style.height = 'auto';
48
- const expandedHeight = Math.min(element.clientHeight, 5.5 * 12);
29
+ @property({ type: Boolean })
30
+ isExpanded: boolean = false;
49
31
 
50
- element.style.height = originalHeight + 'px';
32
+ // The maximum length before truncation.
33
+ private readonly MAX_LENGTH: number = 100;
51
34
 
52
- requestAnimationFrame(() => {
53
- element.style.height = expandedHeight + 'px';
54
- });
35
+ /**
36
+ * Get a truncated version of the errorResponse if it's too long.
37
+ * @returns {string}
38
+ */
39
+ getTruncatedResponse(): string {
40
+ if (this.errorResponse.length > this.MAX_LENGTH) {
41
+ return `${this.errorResponse.substring(0, this.MAX_LENGTH)}...`;
42
+ }
43
+ return this.errorResponse;
55
44
  }
56
45
 
57
- collapseText(target: any) {
58
- const element = target.querySelector('.nile-error-message__summary');
59
- const expandedHeight = element.clientHeight;
60
- element.style.height = expandedHeight + 'px';
61
-
62
- requestAnimationFrame(() => {
63
- element.style.height = '14px';
64
- element.style.whiteSpace = 'nowrap';
65
- });
46
+ /**
47
+ * Toggle the expanded state of the error response.
48
+ */
49
+ toggleExpanded() {
50
+ this.isExpanded = !this.isExpanded;
66
51
  }
67
52
 
68
- toggleExpand(index: number, event: any) {
69
- if (this.shadowRoot) {
70
- if (this.expandedIndex !== null && this.expandedIndex !== index) {
71
- const prevExpandable = this.shadowRoot.querySelectorAll(
72
- '.nile-error-message__expandable'
73
- )[this.expandedIndex];
74
- if (prevExpandable) {
75
- this.collapseText(prevExpandable);
76
- }
77
- }
78
- }
53
+ public render(): TemplateResult {
54
+ return html`
55
+ <div class="nile-error-message" part="base">
56
+ <nile-icon
57
+ name="info2"
58
+ size="14"
59
+ class="nile-error-message__icon"
60
+ part="icon"
61
+ color="#E5434D"
62
+ ></nile-icon>
63
+ <span class="nile-error-message__error">${this.errorMessage}</span>
79
64
 
80
- if (this.expandedIndex === index) {
81
- this.expandedIndex = null;
82
- this.collapseText(event.currentTarget);
83
- } else {
84
- this.expandedIndex = index;
85
- this.expandText(index, event.currentTarget);
86
- }
87
- }
88
65
 
89
- render(): TemplateResult {
90
- return html`
91
- <div class="nile-error-message">
92
- <div class="nile-error-message__info">
93
- <nile-icon
94
- name="info2"
95
- size="14"
96
- class="nile-error-message__icon"
97
- part="icon"
98
- ></nile-icon>
99
- ${this.errorMessages.length}
100
- ${this.errorMessages.length > 1 ? 'attributes' : 'attribute'} are not
101
- valid
66
+ ${this.errorResponse
67
+ ? html` <span class="nile-error-message__response"
68
+ >${this.getTruncatedResponse()}</span
69
+ >
70
+ <span
71
+ class="nile-error-message__more-button"
72
+ @click=${this.toggleExpanded}
73
+ >${this.isExpanded ? 'View Less' : 'View More'}</span
74
+ >`
75
+ : ``}
76
+
77
+ <div
78
+ class="nile-error-message__response-expanded ${this.isExpanded
79
+ ? 'expanded'
80
+ : 'collapsed'}"
81
+ >
82
+ ${this.errorResponse}
102
83
  </div>
103
- ${this.errorMessages.map(
104
- (errorMessage, index) => html`
105
- <div
106
- class="nile-error-message__expandable ${index !== 0
107
- ? 'bordered'
108
- : ''} ${this.expandedIndex === index ? 'expanded' : ''}"
109
- @click="${(event: any) => this.toggleExpand(index, event)}"
110
- >
111
- <div class="nile-error-message__content">
112
- <nile-icon
113
- name="arrowright"
114
- size="14"
115
- class="nile-error-message__arrow"
116
- ></nile-icon>
117
- <div class="nile-error-message__summary">${errorMessage}</div>
118
- </div>
119
- </div>
120
- `
121
- )}
122
84
  </div>
123
85
  `;
124
86
  }
@@ -25,6 +25,7 @@ export const styles = css`
25
25
  gap: 8px;
26
26
  height: 38px;
27
27
  box-sizing: border-box;
28
+ cursor: pointer
28
29
  }
29
30
 
30
31
  .link__label {
@@ -42,6 +43,7 @@ export const styles = css`
42
43
  color: rgba(0, 94, 166, 0.5);
43
44
  cursor: not-allowed;
44
45
  opacity: 0.6;
46
+ pointer-events:none;
45
47
  }
46
48
 
47
49
  .link:not(.link--disabled):not(.link__button):hover {
@@ -0,0 +1 @@
1
+ export { NileRadioButton } from './nile-radio-button';
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { css } from 'lit-element';
9
+
10
+ /**
11
+ * RadioButton CSS
12
+ */
13
+ export const styles = css`
14
+ :host {
15
+ }
16
+
17
+ .button {
18
+ display: inline-flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ width: 100%;
22
+ color: var(--color-text-default, #000);
23
+ text-align: center;
24
+ border-radius: 4px;
25
+ font-family: Colfax-regular;
26
+ font-size: 14px;
27
+ font-style: normal;
28
+ font-weight: 400;
29
+ line-height: 14px; /* 100% */
30
+ letter-spacing: 0.2px;
31
+ text-decoration: none;
32
+ user-select: none;
33
+ white-space: nowrap;
34
+ vertical-align: middle;
35
+ padding: 12px;
36
+ cursor: pointer;
37
+ gap: 10px;
38
+ }
39
+
40
+ .button::-moz-focus-inner {
41
+ border: 0;
42
+ }
43
+
44
+ .button:focus {
45
+ outline: none;
46
+ }
47
+
48
+ .button:focus-visible {
49
+ outline: var(--nile-focus-ring);
50
+ outline-offset: var(--nile-focus-ring-offset);
51
+ }
52
+
53
+ .button--disabled {
54
+ opacity: 0.5;
55
+ cursor: not-allowed;
56
+ }
57
+
58
+ /* When disabled, prevent mouse events from bubbling up from children */
59
+ .button--disabled * {
60
+ pointer-events: none;
61
+ }
62
+
63
+ .button__prefix,
64
+ .button__suffix {
65
+ flex: 0 0 auto;
66
+ display: flex;
67
+ align-items: center;
68
+ pointer-events: none;
69
+ }
70
+
71
+ .button__label {
72
+ display: inline-block;
73
+ }
74
+
75
+ .button__label::slotted(nile-icon) {
76
+ vertical-align: -2px;
77
+ }
78
+
79
+ /* Default */
80
+ .button--default {
81
+ border: 1px solid #c7ced4;
82
+ background: #fff;
83
+ color: black;
84
+ }
85
+
86
+ .button--default:hover:not(.button--disabled) {
87
+ border: 1px solid #c7ced4;
88
+ background: #e5e9eb;
89
+ }
90
+
91
+ .button--default:active:not(.button--disabled) {
92
+ border: 1px solid #c7ced4;
93
+ background: #e5e9eb;
94
+ }
95
+
96
+ .button--checked {
97
+ border: 1px solid #c7ced4;
98
+ background: #e5e9eb;
99
+ }
100
+
101
+ .button--has-label.button--medium .button__label {
102
+ padding: 0 var(--nile-spacing-medium);
103
+ }
104
+
105
+ .button--has-prefix.button--medium {
106
+ padding-inline-start: var(--nile-spacing-small);
107
+ }
108
+
109
+ .button--has-prefix.button--medium .button__label {
110
+ padding-inline-start: var(--nile-spacing-small);
111
+ }
112
+
113
+ .button--has-suffix.button--medium,
114
+ .button--caret.button--medium {
115
+ padding-inline-end: var(--nile-spacing-small);
116
+ }
117
+
118
+ .button--has-suffix.button--medium .button__label,
119
+ .button--caret.button--medium .button__label {
120
+ padding-inline-end: var(--nile-spacing-small);
121
+ }
122
+
123
+ .nile-radio-button--first {
124
+ background-color: red;
125
+ }
126
+
127
+ :host(.nile-radio-button--first:not(.nile-radio-button--last)) .button {
128
+ border-start-end-radius: 0;
129
+ border-end-end-radius: 0;
130
+ }
131
+
132
+ :host(.nile-group-button--inner) .button {
133
+ border-radius: 0;
134
+ }
135
+
136
+ :host(.nile-radio-button--last:not(.nile-radio-button--first)) .button {
137
+ border-start-start-radius: 0;
138
+ border-end-start-radius: 0;
139
+ }
140
+
141
+ /* All except the first */
142
+ :host(.nile-radio-button__button:not(.nile-radio-button__button--first)) {
143
+ margin-inline-start: calc(-1 * var(--nile-input-border-width));
144
+ }
145
+
146
+ :host(.nile-radio-button--inner) .button {
147
+ border-radius: 0;
148
+ border-left: 0;
149
+ border-right: 0;
150
+ }
151
+
152
+ .button__prefix,
153
+ .button__suffix,
154
+ .button__label {
155
+ display: inline-flex;
156
+ position: relative;
157
+ align-items: center;
158
+ }
159
+
160
+ /* We use a hidden input so constraint validation errors work, since they don't appear to show when used with buttons.
161
+ We can't actually hide it, though, otherwise the messages will be suppressed by the browser. */
162
+ .hidden-input {
163
+ all: unset;
164
+ position: absolute;
165
+ top: 0;
166
+ left: 0;
167
+ bottom: 0;
168
+ right: 0;
169
+ outline: dotted 1px red;
170
+ opacity: 0;
171
+ z-index: -1;
172
+ }
173
+ `;
174
+
175
+ export default [styles];
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import {
9
+ LitElement,
10
+ html,
11
+ property,
12
+ CSSResultArray,
13
+ TemplateResult,
14
+ } from 'lit-element';
15
+ import { customElement, query, state } from 'lit/decorators.js';
16
+ import { styles } from './nile-radio-button.css';
17
+ import NileElement from '../internal/nile-element';
18
+ import { HasSlotController } from '../slot';
19
+ import { classMap } from 'lit/directives/class-map.js';
20
+ import { ifDefined } from 'lit/directives/if-defined.js';
21
+ import { watch } from '../internal/watch';
22
+
23
+ /**
24
+ * Nile icon component.
25
+ *
26
+ * @tag nile-radio-button
27
+ *
28
+ */
29
+ @customElement('nile-radio-button')
30
+ export class NileRadioButton extends NileElement {
31
+ /**
32
+ * The styles for RadioButton
33
+ * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
34
+ */
35
+ public static get styles(): CSSResultArray {
36
+ return [styles];
37
+ }
38
+ private readonly hasSlotController = new HasSlotController(
39
+ this,
40
+ '[default]',
41
+ 'prefix',
42
+ 'suffix'
43
+ );
44
+
45
+ @query('.button') input: HTMLInputElement;
46
+ @query('.hidden-input') hiddenInput: HTMLInputElement;
47
+
48
+ @state() protected hasFocus = false;
49
+
50
+ /**
51
+ * @internal The radio button's checked state. This is exposed as an "internal" attribute so we can reflect it, making
52
+ * it easier to style in button groups.
53
+ */
54
+ @property({ type: Boolean, reflect: true }) checked = false;
55
+
56
+ /** The radio's value. When selected, the radio group will receive this value. */
57
+ @property() value: string;
58
+
59
+ /** Disables the radio button. */
60
+ @property({ type: Boolean, reflect: true }) disabled = false;
61
+
62
+ /**
63
+ * The radio button's size. When used inside a radio group, the size will be determined by the radio group's size so
64
+ * this attribute can typically be omitted.
65
+ */
66
+ @property({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';
67
+
68
+ /** Draws a pill-style radio button with rounded edges. */
69
+ @property({ type: Boolean, reflect: true }) pill = false;
70
+
71
+ connectedCallback() {
72
+ super.connectedCallback();
73
+ this.setAttribute('role', 'presentation');
74
+ }
75
+
76
+ private handleBlur() {
77
+ this.hasFocus = false;
78
+ this.emit('nile-blur');
79
+ }
80
+
81
+ private handleClick(e: MouseEvent) {
82
+ if (this.disabled) {
83
+ e.preventDefault();
84
+ e.stopPropagation();
85
+ return;
86
+ }
87
+
88
+ this.checked = true;
89
+ }
90
+
91
+ private handleFocus() {
92
+ this.hasFocus = true;
93
+ this.emit('nile-focus');
94
+ }
95
+
96
+ @watch('disabled', { waitUntilFirstUpdate: true })
97
+ handleDisabledChange() {
98
+ this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');
99
+ }
100
+
101
+ /** Sets focus on the radio button. */
102
+ focus(options?: FocusOptions) {
103
+ this.input.focus(options);
104
+ }
105
+
106
+ /** Removes focus from the radio button. */
107
+ blur() {
108
+ this.input.blur();
109
+ }
110
+
111
+ render() {
112
+ return html`
113
+ <div part="base" role="presentation">
114
+ <button
115
+ part="${`button${this.checked ? ' button--checked' : ''}`}"
116
+ role="radio"
117
+ aria-checked="${this.checked}"
118
+ class=${classMap({
119
+ button: true,
120
+ 'button--default': true,
121
+ 'button--checked': this.checked,
122
+ 'button--disabled': this.disabled,
123
+ 'button--focused': this.hasFocus,
124
+ 'button--has-label': this.hasSlotController.test('[default]'),
125
+ 'button--has-prefix': this.hasSlotController.test('prefix'),
126
+ 'button--has-suffix': this.hasSlotController.test('suffix'),
127
+ })}
128
+ aria-disabled=${this.disabled}
129
+ type="button"
130
+ value=${ifDefined(this.value)}
131
+ tabindex="${this.checked ? '0' : '-1'}"
132
+ @blur=${this.handleBlur}
133
+ @focus=${this.handleFocus}
134
+ @click=${this.handleClick}
135
+ >
136
+ <slot name="prefix" part="prefix" class="button__prefix"></slot>
137
+ <slot part="label" class="button__label"></slot>
138
+ <slot name="suffix" part="suffix" class="button__suffix"></slot>
139
+ </button>
140
+ </div>
141
+ `;
142
+ }
143
+ }
144
+
145
+ export default NileRadioButton;
146
+
147
+ declare global {
148
+ interface HTMLElementTagNameMap {
149
+ 'nile-radio-button': NileRadioButton;
150
+ }
151
+ }
@@ -0,0 +1 @@
1
+ export { NileRadioButtonGroup } from './nile-radio-button-group';