@limetech/lime-elements 40.17.0 → 40.17.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 (43) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/heading-level-BxCuIKkm.js +14 -0
  3. package/dist/cjs/limel-collapsible-section.cjs.entry.js +4 -9
  4. package/dist/cjs/limel-file-viewer.cjs.entry.js +422 -248
  5. package/dist/cjs/limel-form-header.cjs.entry.js +1 -1
  6. package/dist/cjs/limel-form.cjs.entry.js +23 -20
  7. package/dist/collection/components/collapsible-section/collapsible-section.js +11 -9
  8. package/dist/collection/components/form/form.js +8 -6
  9. package/dist/collection/components/form/form.test-schemas.js +68 -0
  10. package/dist/collection/components/form/templates/array-field-collapsible-item.js +13 -3
  11. package/dist/collection/components/form/templates/heading-level.js +0 -10
  12. package/dist/collection/components/form/templates/object-field.js +6 -3
  13. package/dist/collection/components/form-header/form-header.js +3 -3
  14. package/dist/collection/global/shared-types/heading-level.types.js +1 -0
  15. package/dist/collection/interface.js +1 -0
  16. package/dist/collection/util/heading-level.js +10 -0
  17. package/dist/esm/heading-level-B3C0kDpZ.js +12 -0
  18. package/dist/esm/limel-collapsible-section.entry.js +2 -7
  19. package/dist/esm/limel-file-viewer.entry.js +422 -248
  20. package/dist/esm/limel-form-header.entry.js +1 -1
  21. package/dist/esm/limel-form.entry.js +21 -18
  22. package/dist/lime-elements/lime-elements.esm.js +1 -1
  23. package/dist/lime-elements/p-49a53f0b.entry.js +1 -0
  24. package/dist/lime-elements/{p-72907ffd.entry.js → p-68129487.entry.js} +1 -1
  25. package/dist/lime-elements/{p-9436aba6.entry.js → p-74db50a8.entry.js} +4 -4
  26. package/dist/lime-elements/p-B3C0kDpZ.js +1 -0
  27. package/dist/lime-elements/p-e8255f0b.entry.js +1 -0
  28. package/dist/types/components/collapsible-section/collapsible-section.d.ts +2 -1
  29. package/dist/types/components/form/form.d.ts +4 -2
  30. package/dist/types/components/form/form.test-schemas.d.ts +3 -0
  31. package/dist/types/components/form/form.types.d.ts +0 -6
  32. package/dist/types/components/form/row/row.d.ts +1 -1
  33. package/dist/types/components/form/templates/array-field-collapsible-item.d.ts +5 -1
  34. package/dist/types/components/form/templates/heading-level.d.ts +1 -6
  35. package/dist/types/components/form/templates/object-field.d.ts +2 -0
  36. package/dist/types/components/form-header/form-header.d.ts +1 -1
  37. package/dist/types/components.d.ts +9 -7
  38. package/dist/types/global/shared-types/heading-level.types.d.ts +7 -0
  39. package/dist/types/interface.d.ts +2 -1
  40. package/dist/types/util/heading-level.d.ts +7 -0
  41. package/package.json +2 -2
  42. package/dist/lime-elements/p-1d13245d.entry.js +0 -1
  43. package/dist/lime-elements/p-e6be5819.entry.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [40.17.1](https://github.com/Lundalogik/lime-elements/compare/v40.17.0...v40.17.1) (2026-10-29)
2
+
3
+ ### Bug Fixes
4
+
5
+
6
+ * **form:** count collapsible sections as a level of the headings ([41991b2](https://github.com/Lundalogik/lime-elements/commit/41991b28c5b040723014cb81f0d42bf931f9dee8))
7
+ * **form:** name a list item "New item" when its title is an empty list ([7c1ad67](https://github.com/Lundalogik/lime-elements/commit/7c1ad67ce25e3b2d1f035f910fb44acf2be6ccad))
8
+
1
9
  ## [40.17.0](https://github.com/Lundalogik/lime-elements/compare/v40.16.0...v40.17.0) (2026-10-28)
2
10
 
3
11
  ### Features
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @param level - any value
5
+ * @returns whether the value is a heading level, from `1` to `6`
6
+ */
7
+ function isHeadingLevel(level) {
8
+ return (typeof level === 'number' &&
9
+ Number.isSafeInteger(level) &&
10
+ level >= 1 &&
11
+ level <= 6);
12
+ }
13
+
14
+ exports.isHeadingLevel = isHeadingLevel;
@@ -6,17 +6,12 @@ var makeEnterClickable = require('./make-enter-clickable-BZHEWIJD.js');
6
6
  var randomString = require('./random-string-CFCtFh5l.js');
7
7
  var getIconProps = require('./get-icon-props-CwpDdQDI.js');
8
8
  var translations = require('./translations-CLSqfR3x.js');
9
+ var headingLevel = require('./heading-level-BxCuIKkm.js');
9
10
  require('./language-v-MMS6ym.js');
10
11
 
11
12
  const collapsibleSectionCss = () => `@charset "UTF-8";.expand-icon{position:relative;display:flex;align-items:center;justify-content:center;height:1.875rem;margin:0 0 0 0.5rem;width:0.75rem;flex-shrink:0}.line{position:absolute;inset:auto;margin:auto;width:100%;border-radius:1rem;height:0.125rem}.line:first-of-type,.line:last-of-type{transition:opacity 0.2s ease 0.1s, transform 0.4s ease 0.3s;opacity:0;background-color:var(--header-stroke-color, rgb(var(--contrast-900)))}.line:nth-of-type(2){transform:translate3d(0, 0.25rem, 0) rotate(90deg)}.line:nth-of-type(3){transform:translate3d(0, -0.25rem, 0) rotate(-90deg)}.line:nth-of-type(2),.line:nth-of-type(3){transition:opacity 0.2s ease, transform 0.18s ease}.line:nth-of-type(2):before,.line:nth-of-type(2):after,.line:nth-of-type(3):before,.line:nth-of-type(3):after{content:"";position:absolute;inset:0;margin:auto;width:50%;height:100%;border-radius:inherit;background-color:var(--header-stroke-color, rgb(var(--contrast-900)))}.line:nth-of-type(2):before,.line:nth-of-type(3):before{transform:translate3d(0, -0.1rem, 0) rotate(45deg)}.line:nth-of-type(2):after,.line:nth-of-type(3):after{transform:translate3d(0, 0.1rem, 0) rotate(-45deg)}.open-close-toggle:hover+.expand-icon .line:first-of-type,.open-close-toggle:hover+.expand-icon .line:last-of-type,.open-close-toggle:focus-visible+.expand-icon .line:first-of-type,.open-close-toggle:focus-visible+.expand-icon .line:last-of-type{transition:opacity 0.8s ease 0.4s, transform 0.4s ease 0.3s;opacity:1}.open-close-toggle:hover+.expand-icon .line:first-of-type,.open-close-toggle:focus-visible+.expand-icon .line:first-of-type{transform:rotate3d(0, 0, 1, 0deg)}.open-close-toggle:hover+.expand-icon .line:last-of-type,.open-close-toggle:focus-visible+.expand-icon .line:last-of-type{transform:rotate3d(0, 0, 1, 0deg)}.open-close-toggle:hover+.expand-icon .line:nth-of-type(2),.open-close-toggle:hover+.expand-icon .line:nth-of-type(3),.open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(2),.open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(3){transition:opacity 0.5s ease 0.4s, transform 0.7s cubic-bezier(0.85, 0.11, 0.14, 1.35) 0.2s}.open-close-toggle:hover+.expand-icon .line:nth-of-type(2),.open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(2){transform:translate3d(0, 0.5rem, 0) rotate(90deg);opacity:0.4}.open-close-toggle:hover+.expand-icon .line:nth-of-type(3),.open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(3){transform:translate3d(0, -0.5rem, 0) rotate(-90deg);opacity:0.4}section.open .line:first-of-type,section.open .line:last-of-type{transition:opacity 0.2s ease 0.1s, transform 0.4s ease 0.3s;opacity:1}section.open .line:first-of-type{transform:rotate3d(0, 0, 1, 0deg)}section.open .line:last-of-type{transform:rotate3d(0, 0, 1, 0deg)}section.open .line:nth-of-type(2),section.open .line:nth-of-type(3){transition:opacity 1s ease, transform 0.4s ease}section.open .line:nth-of-type(2){transform:translate3d(0, 1rem, 0) rotate(90deg);opacity:0}section.open .line:nth-of-type(3){transform:translate3d(0, -1rem, 0) rotate(-90deg);opacity:0}section.open .open-close-toggle:hover+.expand-icon .line:first-of-type,section.open .open-close-toggle:hover+.expand-icon .line:last-of-type,section.open .open-close-toggle:focus-visible+.expand-icon .line:first-of-type,section.open .open-close-toggle:focus-visible+.expand-icon .line:last-of-type{transition:opacity 0.2s ease 0.4s, transform 0.4s cubic-bezier(0.85, 0.11, 0.14, 1.35) 0.2s}section.open .open-close-toggle:hover+.expand-icon .line:first-of-type,section.open .open-close-toggle:focus-visible+.expand-icon .line:first-of-type{transform:rotate3d(0, 0, 1, 45deg)}section.open .open-close-toggle:hover+.expand-icon .line:last-of-type,section.open .open-close-toggle:focus-visible+.expand-icon .line:last-of-type{transform:rotate3d(0, 0, 1, -45deg)}section.open .open-close-toggle:hover+.expand-icon .line:nth-of-type(2),section.open .open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(2){transform:translate3d(0, 1rem, 0) rotate(90deg);opacity:0}section.open .open-close-toggle:hover+.expand-icon .line:nth-of-type(3),section.open .open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(3){transform:translate3d(0, -1rem, 0) rotate(-90deg);opacity:0}:host(limel-collapsible-section){--border-radius-of-header:0.75rem;display:block}:host([hidden]){display:none}button.open-close-toggle{appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-align:inherit;position:absolute;inset:0;width:100%}button.open-close-toggle:focus{outline:none}button.open-close-toggle:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}button.open-close-toggle{transition:background-color 0.4s ease, border-radius 0.1s ease;cursor:pointer;z-index:-1;background-color:var(--closed-header-background-color, rgb(var(--contrast-200)));border-radius:var(--border-radius-of-header)}button.open-close-toggle:hover,button.open-close-toggle:focus-visible{background-color:var(--open-header-background-color, rgb(var(--contrast-300)))}section.open button.open-close-toggle{background-color:var(--open-header-background-color, rgb(var(--contrast-100)));border-radius:var(--border-radius-of-header) var(--border-radius-of-header) var(--limel-cs-open-header-bottom-border-radius, 0) var(--limel-cs-open-header-bottom-border-radius, 0)}section.open button.open-close-toggle:hover,section.open button.open-close-toggle:focus-visible{background-color:var(--open-header-background-color, rgb(var(--contrast-300)))}.title,.divider-line,.expand-icon{pointer-events:none}section{transition:box-shadow 0.4s ease;border-radius:var(--border-radius-of-header)}section[aria-invalid]:not([aria-invalid=false]){--header-stroke-color:rgb(var(--color-red-default)) !important}section[aria-invalid]:not([aria-invalid=false]):not(.open){box-shadow:0 0 0 1px rgb(var(--color-red-default))}header{isolation:isolate;position:relative;align-items:center;display:flex;justify-content:space-between;gap:0.5rem;padding-left:0.5rem;height:2.5rem}limel-icon{width:1.5rem;flex-shrink:0}.title{font-size:1rem;font-weight:300;color:var(--limel-theme-on-surface-color);justify-self:flex-start;user-select:none;height:auto;max-height:3rem;line-height:1.2rem;display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.divider-line{transition:opacity 0.3s ease 0.3s;flex-grow:1;height:0.125rem;border-radius:1rem;background-color:var(--header-stroke-color, rgb(var(--contrast-900)));opacity:0;margin-right:0.5rem}section.open .divider-line{opacity:0.16}.actions{justify-self:flex-end;flex-shrink:0}::slotted([slot=header]){margin-right:0.5rem}.body{background-color:var(--body-background-color, var(--contrast-100));padding-left:var(--body-padding, 1.25rem);padding-right:var(--body-padding, 1.25rem);border-radius:0 0 var(--border-radius-of-header) var(--border-radius-of-header)}.body{transition:grid-template-rows var(--limel-cs-grid-template-rows-transition-speed) cubic-bezier(1, 0.09, 0, 0.89);display:grid;grid-template-rows:var(--limel-cs-grid-template-rows)}.body slot{transition:opacity var(--limel-cs-opacity-transition-speed) ease var(--limel-cs-opacity-transition-delay);display:block;overflow:hidden}:host(limel-collapsible-section:not([is-open])){--limel-cs-opacity-transition-speed:0.1s;--limel-cs-opacity-transition-delay:0s;--limel-cs-grid-template-rows-transition-speed:0.3s;--limel-cs-grid-template-rows:0fr}:host(limel-collapsible-section:not([is-open])) slot{opacity:0}:host(limel-collapsible-section[is-open]){--limel-cs-opacity-transition-speed:0.4s;--limel-cs-opacity-transition-delay:0.3s;--limel-cs-grid-template-rows-transition-speed:0.46s;--limel-cs-grid-template-rows:1fr}:host(limel-collapsible-section[is-open]) slot{opacity:1}header:hover+.body,header:has(.open-close-toggle:hover)+.body,header:has(.open-close-toggle:focus-visible)+.body{will-change:grid-template-rows}header:hover+.body slot,header:has(.open-close-toggle:hover)+.body slot,header:has(.open-close-toggle:focus-visible)+.body slot{will-change:opacity}`;
12
13
 
13
14
  const DEFAULT_HEADING_LEVEL = 2;
14
- function isHeadingLevel(level) {
15
- return (typeof level === 'number' &&
16
- Number.isSafeInteger(level) &&
17
- level >= 1 &&
18
- level <= 6);
19
- }
20
15
  const CollapsibleSection = class {
21
16
  constructor(hostRef) {
22
17
  index.registerInstance(this, hostRef);
@@ -123,15 +118,15 @@ const CollapsibleSection = class {
123
118
  makeEnterClickable.removeEnterClickable(button);
124
119
  }
125
120
  render() {
126
- return (index.h("section", { key: '1cb8db604bbbc8f8dbb7ca97895b3cfcf4dcd80b', class: `${this.isOpen ? 'open' : ''}`, "aria-invalid": this.invalid, "aria-labelledby": this.header ? this.headingId : null }, index.h("header", { key: '4e55c5b636b1d049df4d77a77a35285648096ea0' }, index.h("button", { key: '29eefb5499fb0f00cbdf513698acf8f357a935a6', class: "open-close-toggle", onClick: this.onClick, "aria-controls": this.bodyId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-label": this.getCollapsibleSectionAriaLabel(), type: "button" }), this.renderExpandCollapseSign(), this.renderIcon(), this.renderHeading(), index.h("div", { key: '16ec84abfe81a812c9d30188a714b58d363ca8a3', class: "divider-line", role: "presentation" }), this.renderHeaderSlot(), this.renderActions()), index.h("div", { key: 'f28ff7d73f05dc1a6ca0dcd9948cb67107647598', class: "body", inert: !this.isOpen, "aria-hidden": String(!this.isOpen), id: this.bodyId, role: "region" }, index.h("slot", { key: '33d0fda5501c178f92dff4a1b0361a43829fe095' }))));
121
+ return (index.h("section", { key: 'ff18dacc5e74d3bd8d16da55be3e5340922acf86', class: `${this.isOpen ? 'open' : ''}`, "aria-invalid": this.invalid, "aria-labelledby": this.header ? this.headingId : null }, index.h("header", { key: 'f4dba35493c7ce7344ff34d2fbaeeb769f8c87eb' }, index.h("button", { key: 'd3a632b4002d01774c9bb88f250be4e196340ef3', class: "open-close-toggle", onClick: this.onClick, "aria-controls": this.bodyId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-label": this.getCollapsibleSectionAriaLabel(), type: "button" }), this.renderExpandCollapseSign(), this.renderIcon(), this.renderHeading(), index.h("div", { key: '8d8489917d5e1bfa8de3cca8294651f448c8129c', class: "divider-line", role: "presentation" }), this.renderHeaderSlot(), this.renderActions()), index.h("div", { key: 'fd7e13cf3bd26815d62c3fbac0ef04ed4db364b5', class: "body", inert: !this.isOpen, "aria-hidden": String(!this.isOpen), id: this.bodyId, role: "region" }, index.h("slot", { key: '90ed08286c1091f5c5c5feec827729cfa65588fc' }))));
127
122
  }
128
123
  getHeadingLevel() {
129
- return isHeadingLevel(this.headingLevel)
124
+ return headingLevel.isHeadingLevel(this.headingLevel)
130
125
  ? this.headingLevel
131
126
  : DEFAULT_HEADING_LEVEL;
132
127
  }
133
128
  warnIfHeadingLevelIsInvalid() {
134
- if (!isHeadingLevel(this.headingLevel)) {
129
+ if (!headingLevel.isHeadingLevel(this.headingLevel)) {
135
130
  console.warn(`limel-collapsible-section: headingLevel must be a whole number from 1 to 6, but it is ${this.headingLevel}. The heading is drawn as an h${DEFAULT_HEADING_LEVEL} instead.`);
136
131
  }
137
132
  }