@aquera/nile-elements 0.0.3-9 → 0.0.4-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 (69) 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-calendar/index.d.ts +1 -0
  5. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-calendar/index.js +2 -0
  6. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-calendar/index.js.map +1 -0
  7. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-calendar/nile-calendar.css.d.ts +12 -0
  8. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-calendar/nile-calendar.css.js +186 -0
  9. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-calendar/nile-calendar.css.js.map +1 -0
  10. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-calendar/nile-calendar.d.ts +70 -0
  11. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-calendar/nile-calendar.js +477 -0
  12. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-calendar/nile-calendar.js.map +1 -0
  13. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.css.js +1 -1
  14. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.css.js.map +1 -1
  15. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.d.ts +1 -17
  16. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.js +13 -317
  17. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  18. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-select/nile-select.js +1 -1
  19. package/.rollup.cache/opt/atlassian/pipelines/agent/build/packages/nile-elements/dist/src/nile-select/nile-select.js.map +1 -1
  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 +332 -166
  24. package/dist/nile-calendar/index.cjs.js +2 -0
  25. package/dist/nile-calendar/index.cjs.js.map +1 -0
  26. package/dist/nile-calendar/index.esm.js +1 -0
  27. package/dist/nile-calendar/nile-calendar.cjs.js +2 -0
  28. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -0
  29. package/dist/nile-calendar/nile-calendar.css.cjs.js +2 -0
  30. package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -0
  31. package/dist/nile-calendar/nile-calendar.css.esm.js +174 -0
  32. package/dist/nile-calendar/nile-calendar.esm.js +68 -0
  33. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  34. package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
  35. package/dist/nile-date-picker/nile-date-picker.css.cjs.js +1 -1
  36. package/dist/nile-date-picker/nile-date-picker.css.cjs.js.map +1 -1
  37. package/dist/nile-date-picker/nile-date-picker.css.esm.js +1 -1
  38. package/dist/nile-date-picker/nile-date-picker.esm.js +9 -83
  39. package/dist/nile-select/nile-select.cjs.js +1 -1
  40. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  41. package/dist/nile-select/nile-select.esm.js +1 -1
  42. package/dist/src/index.d.ts +1 -0
  43. package/dist/src/index.js +1 -0
  44. package/dist/src/index.js.map +1 -1
  45. package/dist/src/nile-calendar/index.d.ts +1 -0
  46. package/dist/src/nile-calendar/index.js +2 -0
  47. package/dist/src/nile-calendar/index.js.map +1 -0
  48. package/dist/src/nile-calendar/nile-calendar.css.d.ts +12 -0
  49. package/dist/src/nile-calendar/nile-calendar.css.js +186 -0
  50. package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -0
  51. package/dist/src/nile-calendar/nile-calendar.d.ts +70 -0
  52. package/dist/src/nile-calendar/nile-calendar.js +477 -0
  53. package/dist/src/nile-calendar/nile-calendar.js.map +1 -0
  54. package/dist/src/nile-date-picker/nile-date-picker.css.js +1 -1
  55. package/dist/src/nile-date-picker/nile-date-picker.css.js.map +1 -1
  56. package/dist/src/nile-date-picker/nile-date-picker.d.ts +1 -17
  57. package/dist/src/nile-date-picker/nile-date-picker.js +13 -317
  58. package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  59. package/dist/src/nile-select/nile-select.js +1 -1
  60. package/dist/src/nile-select/nile-select.js.map +1 -1
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +1 -1
  63. package/src/index.ts +1 -0
  64. package/src/nile-calendar/index.ts +1 -0
  65. package/src/nile-calendar/nile-calendar.css.ts +188 -0
  66. package/src/nile-calendar/nile-calendar.ts +571 -0
  67. package/src/nile-date-picker/nile-date-picker.css.ts +1 -1
  68. package/src/nile-date-picker/nile-date-picker.ts +14 -381
  69. package/src/nile-select/nile-select.ts +1 -1
@@ -164,9 +164,12 @@ export class NileDatePicker extends NileElement {
164
164
  this.requestUpdate();
165
165
  }
166
166
 
167
-
168
-
169
-
167
+ handleChanged(event:any) {
168
+ this.emit('nile-changed', { value: event.detail.value });
169
+ if (this.dropdown) {
170
+ this.dropdown.hide();
171
+ }
172
+ }
170
173
 
171
174
  connectedCallback() {
172
175
  super.connectedCallback();
@@ -182,310 +185,6 @@ export class NileDatePicker extends NileElement {
182
185
  }
183
186
  }
184
187
 
185
- private getDaysArray(year: number, month: number): number[] {
186
- const daysInMonth = new Date(year, month + 1, 0).getDate();
187
- return Array.from({ length: daysInMonth }, (_, i) => i + 1);
188
- }
189
-
190
- private nextMonth(): void {
191
-
192
- if (this.currentMonth === 11) {
193
- this.currentMonth = 0;
194
- this.currentYear++;
195
- } else {
196
- this.currentMonth++;
197
- }
198
- this.requestUpdate();
199
- }
200
-
201
- private prevMonth(): void {
202
-
203
- if (this.currentMonth === 0) {
204
- this.currentMonth = 11;
205
- this.currentYear--;
206
- } else {
207
- this.currentMonth--;
208
- }
209
- this.requestUpdate();
210
- }
211
-
212
- private selectDate(day: number, month: number, year: number): void {
213
- const selectedDate = new Date(year, month, day);
214
-
215
- if (this.range) {
216
- if (this.startDate && this.endDate) {
217
- this.startDate = null;
218
- this.endDate = null;
219
- }
220
-
221
- if (this.isSelectingStart) {
222
- this.startDate = selectedDate;
223
- if (this.endDate && selectedDate > this.endDate) {
224
- this.endDate = null;
225
- }
226
- this.isSelectingStart = false;
227
- } else {
228
- this.isSelectingStart = true;
229
-
230
- if (this.startDate && selectedDate < this.startDate) {
231
- this.startDate = selectedDate;
232
- this.endDate = null;
233
- this.isSelectingStart = false;
234
- } else {
235
- this.endDate = selectedDate;
236
- }
237
- }
238
- } else {
239
- this.value = selectedDate;
240
- this.emit('nile-changed', { value: this.value });
241
- if (this.dropdown) {
242
- this.dropdown.hide();
243
- }
244
- }
245
-
246
- this.requestUpdate();
247
- }
248
-
249
- private confimRange() {
250
- if (this.startDate && this.endDate) {
251
- this.emit('nile-range-changed', {
252
- startDate: this.startDate,
253
- endDate: this.endDate,
254
- });
255
- if (this.dropdown) {
256
- this.dropdown.hide();
257
- }
258
-
259
- this.rangeValue = {
260
- startDate: this.startDate,
261
- endDate: this.endDate,
262
- };
263
- }
264
- }
265
-
266
- private renderMonth(
267
- year: number,
268
- month: number,
269
- daysArray: number[]
270
- ): TemplateResult {
271
- const firstDay = new Date(year, month, 1).getDay();
272
- const lastDay = new Date(year, month + 1, 0).getDay();
273
- const prevMonthDays = this.getDaysArray(
274
- month === 0 ? year - 1 : year,
275
- month === 0 ? 11 : month - 1
276
- );
277
- const nextMonthDays = this.getDaysArray(
278
- month === 11 ? year + 1 : year,
279
- month === 11 ? 0 : month + 1
280
- );
281
- const fillerDaysBefore = prevMonthDays.slice(
282
- prevMonthDays.length - firstDay
283
- );
284
- const fillerDaysAfter = nextMonthDays.slice(0, 6 - lastDay);
285
- const allDays = [...fillerDaysBefore, ...daysArray, ...fillerDaysAfter];
286
-
287
- const isSelectedDate = (
288
- day: number,
289
- month: number,
290
- year: number,
291
- isCurrentMonth: boolean
292
- ) => {
293
- if (!isCurrentMonth) return '';
294
-
295
- if (!this.range && this.value) {
296
- const isSelected =
297
- day === this.value.getDate() &&
298
- month === this.value.getMonth() &&
299
- year === this.value.getFullYear();
300
- if (isSelected) return 'selected-date';
301
- }
302
-
303
- const isStartDate =
304
- this.startDate &&
305
- day === this.startDate.getDate() &&
306
- month === this.startDate.getMonth() &&
307
- year === this.startDate.getFullYear();
308
- const isEndDate =
309
- this.endDate &&
310
- day === this.endDate.getDate() &&
311
- month === this.endDate.getMonth() &&
312
- year === this.endDate.getFullYear();
313
-
314
- return isStartDate ? 'range-start' : isEndDate ? 'range-end' : '';
315
- };
316
-
317
- const isInRange = (
318
- day: number,
319
- month: number,
320
- year: number,
321
- isCurrentMonth: boolean
322
- ) => {
323
- if (!isCurrentMonth) return false;
324
- if (this.startDate && this.endDate) {
325
- const date = new Date(year, month, day);
326
- return date >= this.startDate && date <= this.endDate;
327
- }
328
- return false;
329
- };
330
-
331
- return html`
332
- <div class="calendar">
333
- <div class="calendar-header">
334
- <nile-icon name="arrowleft" color="black" @click="${this.prevMonth}">
335
- </nile-icon>
336
- <span
337
- >${new Date(year, month).toLocaleString('default', {
338
- month: 'long',
339
- })}
340
- ${year}</span
341
- >
342
- <nile-icon name="arrowright" color="black" @click="${this.nextMonth}">
343
- </nile-icon>
344
- </div>
345
- <div class="day-names">
346
- <div class="day">Sun</div>
347
- <div class="day">Mon</div>
348
- <div class="day">Tue</div>
349
- <div class="day">Wed</div>
350
- <div class="day">Thu</div>
351
- <div class="day">Fri</div>
352
- <div class="day">Sat</div>
353
- </div>
354
- <div class="days">
355
- ${allDays.map((day, index) => {
356
- const isCurrentMonth =
357
- index >= fillerDaysBefore.length &&
358
- index < fillerDaysBefore.length + daysArray.length;
359
- return html` <div
360
- class="day ${isSelectedDate(
361
- day,
362
- month,
363
- year,
364
- isCurrentMonth
365
- )} ${isInRange(day, month, year, isCurrentMonth)
366
- ? 'in-range'
367
- : ''} ${!isCurrentMonth ? 'filler' : ''}"
368
- @click="${() => {
369
- if (isCurrentMonth) {
370
- this.selectDate(day, month, year);
371
- }
372
- }}"
373
- >
374
- ${day}
375
- </div>`;
376
- })}
377
- </div>
378
- </div>
379
- `;
380
- }
381
-
382
- private formatDate(date: Date | null): string {
383
- if (!date) return '';
384
- const day = String(date.getDate()).padStart(2, '0');
385
- const month = String(date.getMonth() + 1).padStart(2, '0');
386
- const year = date.getFullYear();
387
- return `${day}/${month}/${year}`;
388
- }
389
-
390
- private formatDateRange(value: { startDate: Date | null, endDate: Date | null }): string {
391
- if(!value){
392
- return value;
393
- }
394
- if (!value.startDate || !value.endDate) return '';
395
- return `${this.formatDate(value.startDate)} - ${this.formatDate(value.endDate)}`;
396
- }
397
-
398
- private handleStartDateInput(event: CustomEvent): void {
399
- const date = this.parseDate(event.detail.value);
400
- if (!this.isValidDateInput(date)) {
401
- this.startDate = null;
402
- }
403
- if (date && (!this.endDate || date <= this.endDate)) {
404
- this.startDate = date;
405
- } else {
406
- this.startDate = null;
407
- this.endDate = null;
408
- }
409
- this.requestUpdate();
410
- }
411
-
412
- private handleEndDateInput(event: CustomEvent): void {
413
- const date = this.parseDate(event.detail.value);
414
- if (!this.isValidDateInput(date)) {
415
- this.endDate = null;
416
- }
417
- if (date && (!this.startDate || date >= this.startDate)) {
418
- this.endDate = date;
419
- } else {
420
- this.endDate = null;
421
-
422
- }
423
- this.requestUpdate();
424
- }
425
-
426
- private parseDate(dateString: string): Date | null {
427
- const [day, month, year] = dateString.split('/').map(Number);
428
- const date = new Date(year, month - 1, day);
429
- return !isNaN(date.getTime()) ? date : null;
430
- }
431
-
432
- private isValidDateInput(input: any): boolean {
433
- const regex = /^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/\d{4}$/;
434
- return regex.test(input);
435
- }
436
-
437
- private formatTime(date: Date | null): string {
438
- if (!date) return '';
439
- const hours = String(date.getHours()).padStart(2, '0');
440
- const minutes = String(date.getMinutes()).padStart(2, '0');
441
- const seconds = String(date.getSeconds()).padStart(2, '0');
442
- return `${hours}:${minutes}:${seconds}`;
443
- }
444
-
445
- // Validate time in HH:MM:SS format
446
- private isValidTimeInput(input: string): boolean {
447
- const regex = /^([0-1]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/;
448
- return regex.test(input);
449
- }
450
-
451
- // Parse time string to a Date object
452
- private parseTime(input: string, date: Date): Date | null {
453
- if (!this.isValidTimeInput(input)) {
454
- return null;
455
- }
456
- const [hour, minute, second] = input.split(':').map(Number);
457
- const newDate = new Date(date.getTime());
458
- newDate.setHours(hour, minute, second);
459
- return newDate;
460
- }
461
-
462
- private handleStartTimeInput(event: CustomEvent): void {
463
- if (!this.startDate) {
464
- this.startDate = null;
465
- return;
466
- }
467
- const time = this.parseTime(event.detail.value, this.startDate);
468
- if (time) {
469
- this.startDate = time;
470
- } else {
471
- this.startDate.setHours(0, 0, 0);
472
- }
473
- this.requestUpdate();
474
- }
475
-
476
- private handleEndTimeInput(event: CustomEvent): void {
477
- if (!this.endDate) {
478
- this.endDate = null;
479
- return;
480
- }
481
- const time = this.parseTime(event.detail.value, this.endDate);
482
- if (time) {
483
- this.endDate = time;
484
- } else {
485
- this.endDate.setHours(0, 0, 0);
486
- }
487
- this.requestUpdate();
488
- }
489
188
 
490
189
 
491
190
 
@@ -498,82 +197,16 @@ private handleEndTimeInput(event: CustomEvent): void {
498
197
  * @slot This is a slot test
499
198
  */
500
199
  render(): TemplateResult {
501
- const daysArray = this.getDaysArray(this.currentYear, this.currentMonth);
502
- const nextMonth = (this.currentMonth + 1) % 12;
503
- const nextYear =
504
- this.currentMonth === 11 ? this.currentYear + 1 : this.currentYear;
505
- const nextMonthDaysArray = this.getDaysArray(nextYear, nextMonth);
506
200
 
507
201
  return html`
508
- <nile-dropdown>
509
- ${this.range ? html`
510
- <nile-input
511
- slot="trigger"
512
- label="Choose a date range"
513
- readonly
514
- value="${this.formatDateRange(this.rangeValue)}"
515
- >
516
- <nile-icon name="calendar" slot="suffix"> </nile-icon>
517
- </nile-input>
518
- ` : html`
519
- <nile-input
520
- slot="trigger"
521
- label="Choose a date"
522
- readonly
523
- value="${this.formatDate(this.value)}"
524
- >
525
- <nile-icon name="calendar" slot="suffix"> </nile-icon>
526
- </nile-input>
527
- `}
528
-
529
- <div class="base">
530
- <div class="calendar-wrapper">
531
- <div class="calendar-container ${this.range ? 'with-margin' : ''}">
532
- ${this.renderMonth(
533
- this.currentYear,
534
- this.currentMonth,
535
- this.getDaysArray(this.currentYear, this.currentMonth)
536
- )}
537
- </div>
538
- ${this.range
539
- ? html`
540
- <div class="calendar-container">
541
- ${this.renderMonth(
542
- this.currentYear,
543
- (this.currentMonth + 1) % 12,
544
- this.getDaysArray(
545
- this.currentYear,
546
- (this.currentMonth + 1) % 12
547
- )
548
- )}
549
- </div>
550
- `
551
- : ''}
552
- </div>
553
- ${this.range
554
- ? html`
555
- <div class="calender-input">
556
- <span class="manual-input-label">From </span>
557
- <div class="from">
558
- <nile-input class="manual-input" value="${this.formatDate(this.startDate)}" placeholder="DD/MM/YYYY" @nile-change="${this.handleStartDateInput}"></nile-input>
559
- <nile-input class="manual-input" value="${this.formatTime(this.startDate)}" placeholder="HH:MM:SS" @nile-change="${this.handleStartTimeInput}"> </nile-input>
560
-
561
- </div>
562
- <br>
563
- <span class="manual-input-label">To </span>
564
- <div class="from">
565
- <nile-input class="manual-input" value="${this.formatDate(this.endDate)}" placeholder="DD/MM/YYYY" @nile-change="${this.handleEndDateInput}"></nile-input>
566
- <nile-input class="manual-input" value="${this.formatTime(this.endDate)}" placeholder="HH:MM:SS" @nile-change="${this.handleEndTimeInput}"> </nile-input>
567
- </div>
568
- <nile-button class="apply-button" ?disabled="${
569
- !this.startDate || !this.endDate
570
- }" @click="${this.confimRange}"> Apply</nile-button>
571
-
572
- </div>
573
- </div>
574
- `
575
- : ''}
576
- </div>
202
+ <nile-dropdown .hoist="${true}">
203
+ <slot
204
+ slot="trigger"
205
+ part="trigger"
206
+ name="trigger"
207
+ ></slot>
208
+
209
+ <nile-calendar .value="${this.range}" .range="${this.range}" @nile-changed="${this.handleChanged}"> </nile-calendar>
577
210
  </nile-dropdown>
578
211
  `;
579
212
  }
@@ -713,7 +713,7 @@ export class NileSelect extends NileElement implements NileFormControl {
713
713
  allOptions.forEach(el => {
714
714
  const lowerCaseLabel = el.getTextLabel().toLowerCase();
715
715
  const lowerCaseValue = (el.value || '').toLowerCase();
716
- if (lowerCaseLabel.startsWith(lowerCaseSearchValue) || lowerCaseValue.startsWith(lowerCaseSearchValue)) {
716
+ if (lowerCaseLabel.includes(lowerCaseSearchValue) || lowerCaseValue.includes(lowerCaseSearchValue)) {
717
717
  el.hidden = false;
718
718
  filteredOptions.push(el);
719
719
  } else {