@aquera/nile-elements 0.0.5-9 → 0.0.6-2

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 (71) hide show
  1. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/index.d.ts +1 -0
  2. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/index.js +1 -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-button/nile-button.css.js +2 -2
  5. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-button/nile-button.css.js.map +1 -1
  6. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.css.js +0 -162
  7. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.css.js.map +1 -1
  8. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.d.ts +5 -21
  9. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.js +21 -141
  10. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  11. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-switcher/index.d.ts +1 -0
  12. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-switcher/index.js +2 -0
  13. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-switcher/index.js.map +1 -0
  14. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-switcher/nile-switcher.css.d.ts +12 -0
  15. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-switcher/nile-switcher.css.js +35 -0
  16. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-switcher/nile-switcher.css.js.map +1 -0
  17. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-switcher/nile-switcher.d.ts +60 -0
  18. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-switcher/nile-switcher.js +124 -0
  19. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-switcher/nile-switcher.js.map +1 -0
  20. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/tsconfig.tsbuildinfo +1 -1
  21. package/dist/index.cjs.js +1 -1
  22. package/dist/index.esm.js +1 -1
  23. package/dist/index.iife.js +80 -187
  24. package/dist/nile-button/nile-button.css.cjs.js +1 -1
  25. package/dist/nile-button/nile-button.css.cjs.js.map +1 -1
  26. package/dist/nile-button/nile-button.css.esm.js +2 -2
  27. package/dist/nile-date-picker/index.cjs.js +1 -1
  28. package/dist/nile-date-picker/index.esm.js +1 -1
  29. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  30. package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
  31. package/dist/nile-date-picker/nile-date-picker.css.cjs.js +1 -1
  32. package/dist/nile-date-picker/nile-date-picker.css.cjs.js.map +1 -1
  33. package/dist/nile-date-picker/nile-date-picker.css.esm.js +2 -164
  34. package/dist/nile-date-picker/nile-date-picker.esm.js +3 -4
  35. package/dist/nile-switcher/index.cjs.js +2 -0
  36. package/dist/nile-switcher/index.cjs.js.map +1 -0
  37. package/dist/nile-switcher/index.esm.js +1 -0
  38. package/dist/nile-switcher/nile-switcher.cjs.js +2 -0
  39. package/dist/nile-switcher/nile-switcher.cjs.js.map +1 -0
  40. package/dist/nile-switcher/nile-switcher.css.cjs.js +2 -0
  41. package/dist/nile-switcher/nile-switcher.css.cjs.js.map +1 -0
  42. package/dist/nile-switcher/nile-switcher.css.esm.js +23 -0
  43. package/dist/nile-switcher/nile-switcher.esm.js +30 -0
  44. package/dist/src/index.d.ts +1 -0
  45. package/dist/src/index.js +1 -0
  46. package/dist/src/index.js.map +1 -1
  47. package/dist/src/nile-button/nile-button.css.js +2 -2
  48. package/dist/src/nile-button/nile-button.css.js.map +1 -1
  49. package/dist/src/nile-date-picker/nile-date-picker.css.js +0 -162
  50. package/dist/src/nile-date-picker/nile-date-picker.css.js.map +1 -1
  51. package/dist/src/nile-date-picker/nile-date-picker.d.ts +5 -21
  52. package/dist/src/nile-date-picker/nile-date-picker.js +21 -141
  53. package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  54. package/dist/src/nile-switcher/index.d.ts +1 -0
  55. package/dist/src/nile-switcher/index.js +2 -0
  56. package/dist/src/nile-switcher/index.js.map +1 -0
  57. package/dist/src/nile-switcher/nile-switcher.css.d.ts +12 -0
  58. package/dist/src/nile-switcher/nile-switcher.css.js +35 -0
  59. package/dist/src/nile-switcher/nile-switcher.css.js.map +1 -0
  60. package/dist/src/nile-switcher/nile-switcher.d.ts +60 -0
  61. package/dist/src/nile-switcher/nile-switcher.js +124 -0
  62. package/dist/src/nile-switcher/nile-switcher.js.map +1 -0
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +1 -1
  65. package/src/index.ts +2 -1
  66. package/src/nile-button/nile-button.css.ts +2 -2
  67. package/src/nile-date-picker/nile-date-picker.css.ts +0 -162
  68. package/src/nile-date-picker/nile-date-picker.ts +20 -160
  69. package/src/nile-switcher/index.ts +1 -0
  70. package/src/nile-switcher/nile-switcher.css.ts +37 -0
  71. package/src/nile-switcher/nile-switcher.ts +185 -0
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.5-9",
6
+ "version": "0.0.6-2",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
package/src/index.ts CHANGED
@@ -29,4 +29,5 @@ export { NileErrorMessage } from './nile-error-message';
29
29
  export { NileFormErrorMessage } from './nile-form-error-message';
30
30
  export { NileFormHelpText } from './nile-form-help-text';
31
31
  export { NileCalendar } from './nile-calendar';
32
- export { NileLink} from './nile-link';
32
+ export { NileLink } from './nile-link';
33
+ export { NileSwitcher } from './nile-switcher';
@@ -146,7 +146,7 @@ export const styles = css`
146
146
  .button--standard.button--tertiary {
147
147
  background-color: var(--nile-colors-white-base);
148
148
  border-color: var(--nile-colors-neutral-500);
149
- color: var(--nile-colors-neutral-700);
149
+ color: var(--nile-colors-dark-900);
150
150
  box-shadow: 0px 2px 4px var(--nile-colors-dark-200);
151
151
  }
152
152
 
@@ -218,7 +218,7 @@ export const styles = css`
218
218
  }
219
219
 
220
220
  .button--outline.button--secondary:active:not(.button--disabled) {
221
- border-color: var(--nile-colors-primary-700);
221
+ border-color: var(--nile-colors-neutral-700);
222
222
  color: var(--nile-colors-white-base);
223
223
  }
224
224
 
@@ -13,168 +13,6 @@ import { css } from 'lit-element';
13
13
  export const styles = css`
14
14
  :host {
15
15
  }
16
-
17
- .calendar-container {
18
- font-family: Colfax-regular;
19
- width: 365px;
20
- height: auto;
21
- text-align: center;
22
- background: white;
23
- }
24
-
25
- .calendar-container.with-margin {
26
- margin-right: 20px;
27
- }
28
-
29
- .calendar-header {
30
- display: flex;
31
- justify-content: space-between;
32
- padding: 10px;
33
- padding: 22px 20px;
34
- font-size: 14px;
35
- font-weight: 600;
36
- line-height: 14px;
37
- letter-spacing: 0.2px;
38
- }
39
-
40
- .divider {
41
- width: 100%;
42
- height: 1px;
43
- background: #c7ced4;
44
- }
45
-
46
- .day-names {
47
- font-size: 14px;
48
- font-weight: 600;
49
- line-height: 14px;
50
- letter-spacing: 0.2px;
51
- height: 50px;
52
- margin-top: 10px;
53
- }
54
-
55
- .day-names,
56
- .days {
57
- display: flex;
58
- flex-wrap: wrap;
59
- justify-content: flex-start;
60
- height: auto;
61
- align-items: center;
62
- }
63
-
64
- .days {
65
- height: auto;
66
- }
67
-
68
- .day {
69
- flex-basis: calc(100% / 7);
70
- box-sizing: border-box;
71
- width: 48px;
72
- align-items: center;
73
- padding: 10px;
74
- height: 32px;
75
- margin-top: 6px;
76
- margin-bottom: 6px;
77
- display: flex;
78
- justify-content: center;
79
- align-items: center;
80
- }
81
-
82
- .filler {
83
- color: grey;
84
- }
85
-
86
- .selected-date {
87
- color: white;
88
- border-radius: 4px;
89
- background: #a5d3f3;
90
- }
91
-
92
-
93
-
94
- .calendar-wrapper {
95
- background: white;
96
- display: flex;
97
- justify-content: space-between;
98
- width: 730px;
99
- }
100
-
101
- .selected-date,
102
- .range-start,
103
- .range-end {
104
- border-radius: 4px;
105
- background: #a5d3f3;
106
- color: white;
107
- }
108
-
109
-
110
- .range-start {
111
- background: #a5d3f3;
112
- border-radius: 4px 0 0 4px;
113
- color: white;
114
- }
115
-
116
- .range-end {
117
- background: #a5d3f3;
118
- border-radius: 0 4px 4px 0;
119
- color: white;
120
- }
121
-
122
- .range-middle {
123
- background: #a5d3f3;
124
- color: white;
125
- border-radius: 0;
126
- }
127
-
128
- .day.selected {
129
- background: #a5d3f3;
130
- color: white;
131
- border-radius: 4px;
132
- }
133
-
134
- .day.in-range {
135
- background: #a5d3f3;
136
- color: white;
137
- }
138
-
139
- .selected-date {
140
- color: white;
141
- border-radius: 4px;
142
- background: #a5d3f3;
143
- }
144
-
145
- .base {
146
- background-color: white;
147
- border-radius: 4px;
148
- padding-bottom: 20px
149
- }
150
-
151
- .calender-input{
152
- padding: 20px;
153
- padding-bottom: 0px;
154
- }
155
-
156
- .from {
157
- display: flex;
158
- justify-content: space-between;
159
- gap: 20px;
160
- }
161
-
162
- .manual-input{
163
- width:100%;
164
- }
165
-
166
- .manual-input-label{
167
- font-size: 12px;
168
- font-style: normal;
169
- font-weight: 500;
170
- margin-bottom: 10px;
171
- }
172
-
173
- .apply-button {
174
- text-align: right;
175
- display: block;
176
- padding-top: 20px;
177
- }
178
16
  `;
179
17
 
180
18
  export default [styles];
@@ -12,25 +12,9 @@ import {
12
12
  CSSResultArray,
13
13
  TemplateResult,
14
14
  } from 'lit-element';
15
- import { customElement } from 'lit/decorators.js';
15
+ import { customElement, query } from 'lit/decorators.js';
16
16
  import { styles } from './nile-date-picker.css';
17
- import { animateTo, stopAnimations } from '../internal/animate';
18
- import { classMap } from 'lit/directives/class-map.js';
19
- import { query } from 'lit/decorators.js';
20
- import {
21
- getAnimation,
22
- setDefaultAnimation,
23
- } from '../utilities/animation-registry';
24
- import { getTabbableBoundary } from '../internal/tabbable';
25
- import { waitForEvent } from '../internal/event';
26
- import { watch } from '../internal/watch';
27
17
  import NileElement from '../internal/nile-element';
28
- import type { CSSResultGroup, PropertyValues } from 'lit';
29
- import type NileButton from '../nile-button/nile-button';
30
- import type NileIconButton from '../nile-icon-button/nile-icon-button';
31
- import type { NileMenu } from '../nile-menu';
32
- import type { NilePopup } from '../nile-popup';
33
- import '../nile-popup';
34
18
  import { NileDropdown } from '../nile-dropdown';
35
19
 
36
20
  /**
@@ -49,123 +33,32 @@ export class NileDatePicker extends NileElement {
49
33
  return [styles];
50
34
  }
51
35
 
52
- private currentMonth: number = new Date().getMonth();
53
- private currentYear: number = new Date().getFullYear();
54
-
55
- @query('nile-dropdown') dropdown: NileDropdown;
56
-
57
- @property({ type: Boolean, reflect: true }) dropDownOpened = false;
58
-
59
- @property({ type: Object }) value : any;
60
-
61
- @property({ type: Object }) rangeValue : any;
62
-
63
- @property({ type: String, attribute: 'value' }) valueAttribute:
64
- | string
65
- | null = null;
66
-
67
- @property({ type: String, attribute: 'value' }) formattedDate: string | null =
68
- null;
69
-
70
- @property({ type: Object }) startDate: Date | null = null;
71
- @property({ type: Object }) endDate: Date | null = null;
72
- @property({ type: Boolean }) isSelectingStart = true; // flag to indicate what we're selecting
73
-
74
36
  @property({ type: Boolean }) range = false;
75
37
 
76
- @watch('value')
77
- valueChanged() {
78
-
79
- if (this.range && this.value) {
80
- this.rangeValue = this.value;
81
- this.value = null;
82
- return;
83
- }
84
-
85
- if (this.value && !isNaN(this.value.getTime())) {
86
- const offset = this.value.getTimezoneOffset();
87
- const localDate = new Date(this.value.getTime() - offset * 60 * 1000);
88
- if (!isNaN(localDate.getTime())) {
89
- this.valueAttribute = localDate.toISOString().split('T')[0];
90
- this.formattedDate = `${String(localDate.getDate()).padStart(
91
- 2,
92
- '0'
93
- )}/${String(localDate.getMonth() + 1).padStart(
94
- 2,
95
- '0'
96
- )}/${localDate.getFullYear()}`;
97
- }
98
- }
99
- }
100
-
101
-
102
- updated(changedProperties: PropertyValues) {
103
- super.updated(changedProperties);
38
+ @property() value: any;
104
39
 
105
- if (changedProperties.has('valueAttribute')) {
106
- const date = new Date(this.valueAttribute || '');
107
- if (!isNaN(date.getTime())) {
108
- const offset = date.getTimezoneOffset();
109
- this.value = new Date(date.getTime() - offset * 60 * 1000);
110
- this.currentMonth = this.value.getMonth();
111
- this.currentYear = this.value.getFullYear();
112
- }
113
- }
114
- }
115
-
116
- static get observedAttributes() {
117
- return ['value', 'range'];
118
- }
119
-
120
- attributeChangedCallback(name: string, oldValue: string, newValue: string) {
121
- if (name === 'value') {
122
- this.valueAttribute = newValue;
123
- this.initializeValue();
124
- } else if (name === 'range') {
125
- this.range = newValue !== null;
126
- }
127
- }
128
-
129
- initializeValue() {
130
- if (this.range) {
131
- try {
132
- const rangeValue = JSON.parse(this.valueAttribute || '');
133
- this.startDate = new Date(rangeValue.startDate);
134
- this.endDate = new Date(rangeValue.endDate);
135
-
136
- // Convert to local time
137
- this.startDate = new Date(this.startDate.getTime());
138
- this.endDate = new Date(this.endDate.getTime());
139
-
140
- this.rangeValue = {
141
- startDate: this.startDate,
142
- endDate: this.endDate,
143
- };
144
- this.value = null;
145
- } catch (e) {
146
- // console.error('Invalid range value');
147
- }
148
- } else {
149
- if (this.valueAttribute) {
150
- let date: Date;
151
-
152
- date = new Date(this.valueAttribute);
40
+ @query('nile-dropdown') dropdown: NileDropdown;
153
41
 
154
- date = new Date(date.getTime() - date.getTimezoneOffset() * 60000);
155
42
 
156
- if (!isNaN(date.getTime())) {
157
- this.value = date;
158
- this.currentMonth = this.value.getMonth();
159
- this.currentYear = this.value.getFullYear();
160
- this.rangeValue = null;
161
- }
162
- }
163
- }
164
- this.requestUpdate();
43
+ /**
44
+ * Render method
45
+ * @slot This is a slot test
46
+ */
47
+ render(): TemplateResult {
48
+ return html`
49
+ <nile-dropdown .hoist="${true}">
50
+ <slot
51
+ slot="trigger"
52
+ part="trigger"
53
+ name="trigger"
54
+ ></slot>
55
+ <nile-calendar value="${this.value}" .range="${this.range}" @nile-changed="${this.handleChanged}"></nile-calendar>
56
+ </nile-dropdown>
57
+ `;
165
58
  }
166
59
 
167
- handleChanged(event:any) {
168
- this.emit('nile-changed', { value: event.detail.value });
60
+ handleChanged(event: any) {
61
+ this.emit('nile-changed', event.detail);
169
62
  if (this.dropdown) {
170
63
  this.dropdown.hide();
171
64
  }
@@ -173,16 +66,6 @@ export class NileDatePicker extends NileElement {
173
66
 
174
67
  connectedCallback() {
175
68
  super.connectedCallback();
176
- this.initializeValue();
177
-
178
- if (this.valueAttribute) {
179
- const date = new Date(this.valueAttribute);
180
- if (!isNaN(date.getTime())) {
181
- this.value = date;
182
- this.currentMonth = this.value.getMonth();
183
- this.currentYear = this.value.getFullYear();
184
- }
185
- }
186
69
  this.emit('nile-init');
187
70
  }
188
71
 
@@ -190,29 +73,6 @@ export class NileDatePicker extends NileElement {
190
73
  super.disconnectedCallback();
191
74
  this.emit('nile-destroy');
192
75
  }
193
-
194
- /* #endregion */
195
-
196
- /* #region Methods */
197
-
198
- /**
199
- * Render method
200
- * @slot This is a slot test
201
- */
202
- render(): TemplateResult {
203
-
204
- return html`
205
- <nile-dropdown .hoist="${true}">
206
- <slot
207
- slot="trigger"
208
- part="trigger"
209
- name="trigger"
210
- ></slot>
211
-
212
- <nile-calendar .value="${this.range}" .range="${this.range}" @nile-changed="${this.handleChanged}"> </nile-calendar>
213
- </nile-dropdown>
214
- `;
215
- }
216
76
  }
217
77
 
218
78
  export default NileDatePicker;
@@ -0,0 +1 @@
1
+ export { NileSwitcher } from './nile-switcher';
@@ -0,0 +1,37 @@
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
+ * FieldGenerator CSS
12
+ */
13
+ export const styles = css`
14
+ :host {
15
+ display: inline-block;
16
+ width: 100%;
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ .pointer-cursor {
21
+ cursor: pointer;
22
+ }
23
+ .input-container {
24
+ display: flex;
25
+ }
26
+
27
+ .input-container > :first-child {
28
+ width: 100%;
29
+ padding-right: 12px;
30
+ }
31
+ .flex-start {
32
+ align-items: flex-start;
33
+ padding-top: 10px;
34
+ }
35
+ `;
36
+
37
+ export default [styles];
@@ -0,0 +1,185 @@
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 { html, property, TemplateResult } from 'lit-element';
9
+ import { customElement } from 'lit/decorators.js';
10
+ import { styles } from './nile-switcher.css';
11
+ import NileElement from '../internal/nile-element';
12
+ import { CSSResultGroup } from 'lit';
13
+ import { choose } from 'lit/directives/choose.js';
14
+ import { classMap } from 'lit/directives/class-map.js';
15
+
16
+ /**
17
+ * @summary Allows you to switch between nile elements
18
+
19
+ * @dependency nile-icon
20
+ * @dependency nile-input
21
+ * @dependency nile-checkbox
22
+ * @dependency nile-dropdown
23
+ * @dependency nile-textarea
24
+ *
25
+
26
+ * @event nile-change - Emitted when the control's value changes.
27
+ */
28
+
29
+ export interface switchconfig {
30
+ toggleSwitch: boolean;
31
+ defaultInput: switchInputType;
32
+ switchInput: switchInputType;
33
+ }
34
+
35
+ export interface switchInputType {
36
+ inputType: 'dropdown' | 'text' | 'checkbox' | 'text-area';
37
+ value?: String | boolean;
38
+ label?: String;
39
+ placeholder?: string;
40
+ options?: Array<any>;
41
+ multiple?: boolean;
42
+ }
43
+
44
+ @customElement('nile-switcher')
45
+ export class NileSwitcher extends NileElement {
46
+ /**
47
+ * The styles for nile switcher
48
+ * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
49
+ */
50
+ static styles: CSSResultGroup = styles;
51
+ @property() nileSwitchConfig: switchconfig;
52
+
53
+ connectedCallback() {
54
+ super.connectedCallback();
55
+ this.emit('nile-init');
56
+ }
57
+
58
+ disconnectedCallback() {
59
+ super.disconnectedCallback();
60
+ this.emit('nile-destroy');
61
+ }
62
+
63
+ renderNileText(defaultInput: switchInputType) {
64
+ const { value, label, placeholder } = defaultInput;
65
+ return html`<nile-input
66
+ .value=${value}
67
+ .label=${label}
68
+ .placeholder=${placeholder}
69
+ @nile-input=${this.handleChange}
70
+ ></nile-input>`;
71
+ }
72
+
73
+ renderNileTextArea(switchInput: switchInputType) {
74
+ const { value } = switchInput;
75
+ return html`<nile-textarea
76
+ .value=${value}
77
+ @nile-input=${this.handleChange}
78
+ ></nile-textarea>`;
79
+ }
80
+
81
+ renderNileCheckBox(defaultInput: switchInputType) {
82
+ const { value, label } = defaultInput;
83
+
84
+ return html`<nile-checkbox
85
+ .checked=${value}
86
+ .label=${label}
87
+ @valueChange="${this.handleChangeCheckbox}"
88
+ ></nile-checkbox>`;
89
+ }
90
+
91
+ handleChange(event: CustomEvent) {
92
+ this.emit('nile-change', { value: event.detail.value });
93
+ }
94
+
95
+ handleChangeCheckbox(event: CustomEvent) {
96
+ this.emit('nile-change', { value: event.detail.checked });
97
+ }
98
+
99
+ renderDropdown(defaultInput: switchInputType) {
100
+ const { options, multiple, placeholder } = defaultInput;
101
+ return html`<nile-select
102
+ .placeholder=${placeholder}
103
+ .multiple="${multiple}"
104
+ @nile-change="${this.handleChange}"
105
+ >
106
+ ${options &&
107
+ options.map((option: any) => {
108
+ return html`<nile-option .value="${option}">${option} </nile-option>`;
109
+ })}
110
+ </nile-select>`;
111
+ }
112
+
113
+ renderIcon() {
114
+ const icon = !this.nileSwitchConfig.toggleSwitch
115
+ ? 'header-functions'
116
+ : 'stringinput';
117
+ return html`<nile-icon
118
+ size="14"
119
+ class=${classMap({
120
+ 'pointer-cursor': true,
121
+ 'flex-start': icon === 'stringinput',
122
+ })}
123
+ .name=${icon}
124
+ color="#005EA6"
125
+ @click=${this.toggleField}
126
+ ></nile-icon>`;
127
+ }
128
+
129
+ toggleField() {
130
+ this.nileSwitchConfig = {
131
+ ...this.nileSwitchConfig,
132
+ toggleSwitch: !this.nileSwitchConfig.toggleSwitch,
133
+ };
134
+ }
135
+
136
+ singleFieldSwitcher(
137
+ defaultInput: switchInputType,
138
+ switchInput: switchInputType,
139
+ toggleField: boolean
140
+ ) {
141
+ const defaultInputType = defaultInput.inputType;
142
+ const switchInputType = switchInput.inputType;
143
+ return html`
144
+ ${!toggleField
145
+ ? choose(
146
+ defaultInputType,
147
+ [
148
+ ['text', () => this.renderNileText(defaultInput)],
149
+ ['checkbox', () => this.renderNileCheckBox(defaultInput)],
150
+ [
151
+ 'dropdown',
152
+ () => this.renderDropdown(this.nileSwitchConfig.defaultInput),
153
+ ],
154
+ ],
155
+ () => this.renderNileText(defaultInput)
156
+ )
157
+ : choose(
158
+ switchInputType,
159
+ [['text-area', () => this.renderNileTextArea(switchInput)]],
160
+
161
+ () => this.renderNileTextArea(switchInput)
162
+ )}
163
+ ${this.renderIcon()}
164
+ `;
165
+ }
166
+ public render(): TemplateResult {
167
+ const {
168
+ toggleSwitch: toggleField,
169
+ defaultInput,
170
+ switchInput,
171
+ } = this.nileSwitchConfig;
172
+
173
+ return html`<div class="input-container">
174
+ ${this.singleFieldSwitcher(defaultInput, switchInput, toggleField)}
175
+ </div>`;
176
+ }
177
+ }
178
+
179
+ export default NileSwitcher;
180
+
181
+ declare global {
182
+ interface HTMLElementTagNameMap {
183
+ 'nile-switcher': NileSwitcher;
184
+ }
185
+ }