@birdycom/omniaui 0.12.5 → 0.13.0

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 (102) hide show
  1. package/README.md +1 -1
  2. package/bin/lib/copy-js.mjs +12 -1
  3. package/bin/omniaui.mjs +2 -2
  4. package/dist/barcode.d.ts +15 -0
  5. package/dist/barcode.js +164 -0
  6. package/dist/components-extra.css +15 -1
  7. package/dist/components.css +2237 -256
  8. package/dist/components.min.css +1 -1
  9. package/dist/contact-form.d.ts +5 -0
  10. package/dist/contact-form.js +138 -0
  11. package/dist/data-table.js +135 -98
  12. package/dist/fly.d.ts +4 -0
  13. package/dist/fly.js +80 -0
  14. package/dist/form-extras.d.ts +11 -0
  15. package/dist/form-extras.js +214 -0
  16. package/dist/lazy.d.ts +5 -0
  17. package/dist/lazy.js +37 -0
  18. package/dist/oc-theme.css +3 -1
  19. package/dist/parts/app-data-table-footer.css +38 -0
  20. package/dist/parts/app-data-table-rich.css +161 -0
  21. package/dist/parts/app-data-table.css +44 -74
  22. package/dist/parts/app-name-card.css +65 -0
  23. package/dist/parts/app-result.css +39 -0
  24. package/dist/parts/app-titlebar.css +16 -8
  25. package/dist/parts/data-meter-row.css +40 -0
  26. package/dist/parts/data-price.css +20 -0
  27. package/dist/parts/data-ribbon.css +76 -0
  28. package/dist/parts/data-spec-list.css +36 -0
  29. package/dist/parts/data-stock.css +41 -0
  30. package/dist/parts/forms-affix-input.css +1 -1
  31. package/dist/parts/forms-avatar-picker.css +43 -0
  32. package/dist/parts/forms-date-field.css +53 -0
  33. package/dist/parts/forms-density.css +13 -0
  34. package/dist/parts/forms-form-section.css +64 -0
  35. package/dist/parts/forms-form.css +76 -0
  36. package/dist/parts/forms-quantity.css +55 -0
  37. package/dist/parts/forms-rating.css +81 -0
  38. package/dist/parts/media-attachment.css +1 -1
  39. package/dist/parts/media-barcode.css +23 -0
  40. package/dist/parts/media-chat-composer.css +3 -0
  41. package/dist/parts/media-emoji-picker.css +3 -1
  42. package/dist/parts/media-gallery.css +55 -0
  43. package/dist/parts/media-glass-liquid.css +99 -0
  44. package/dist/parts/media-glass-options.css +50 -0
  45. package/dist/parts/media-lazy.css +46 -0
  46. package/dist/parts/media-lightbox.css +4 -0
  47. package/dist/parts/media-message-thread.css +1 -1
  48. package/dist/parts/media-message.css +1 -1
  49. package/dist/parts/nav-topbar-variants.css +96 -0
  50. package/dist/parts/site-base.css +33 -0
  51. package/dist/parts/site-brand-mark.css +56 -0
  52. package/dist/parts/site-cards.css +183 -0
  53. package/dist/parts/site-fly.css +40 -0
  54. package/dist/parts/site-header-variants.css +70 -0
  55. package/dist/parts/site-layout.css +69 -0
  56. package/dist/parts/site-panel.css +29 -0
  57. package/dist/parts/site-prose.css +13 -1
  58. package/dist/parts/utility-hover.css +44 -0
  59. package/dist/showcase.css +114 -22
  60. package/manifest.json +193 -9
  61. package/package.json +7 -2
  62. package/snippets/accordion-accent.html +1 -1
  63. package/snippets/attachment.html +4 -4
  64. package/snippets/avatar-picker.html +40 -0
  65. package/snippets/barcode.html +20 -0
  66. package/snippets/brand-mark.html +41 -0
  67. package/snippets/chat-composer.html +3 -3
  68. package/snippets/data-table.html +51 -76
  69. package/snippets/date-field.html +44 -0
  70. package/snippets/doc-viewer.html +1 -1
  71. package/snippets/emoji-picker.html +1 -1
  72. package/snippets/feature-card.html +52 -0
  73. package/snippets/fly-in.html +30 -0
  74. package/snippets/form-density.html +25 -0
  75. package/snippets/form-section.html +47 -0
  76. package/snippets/gallery.html +25 -0
  77. package/snippets/hover-effects.html +19 -0
  78. package/snippets/icon-list.html +28 -0
  79. package/snippets/lazy.html +39 -0
  80. package/snippets/message-thread.html +12 -12
  81. package/snippets/message.html +10 -10
  82. package/snippets/meter-row.html +29 -0
  83. package/snippets/name-card.html +72 -0
  84. package/snippets/page-header.html +1 -1
  85. package/snippets/page-sections.html +50 -0
  86. package/snippets/panel.html +18 -0
  87. package/snippets/price.html +25 -0
  88. package/snippets/prose.html +3 -3
  89. package/snippets/quantity.html +12 -0
  90. package/snippets/rating.html +26 -0
  91. package/snippets/result.html +31 -0
  92. package/snippets/ribbon.html +48 -0
  93. package/snippets/shot-grid.html +27 -0
  94. package/snippets/sidebar.html +3 -3
  95. package/snippets/spec-list.html +34 -0
  96. package/snippets/stock.html +20 -0
  97. package/snippets/table-actions.html +5 -5
  98. package/snippets/table.html +2 -2
  99. package/snippets/titlebar.html +1 -1
  100. package/snippets/user.html +3 -3
  101. package/dist/parts/app-column-menu.css +0 -85
  102. package/snippets/column-menu.html +0 -38
@@ -0,0 +1,27 @@
1
+ <!-- OmniaUI component: shot-grid - A grid of screenshots with a caption that open in the lightbox, and a browser frame with a glow in the accent color and a product mark on it. Needs @birdycom/omniaui CSS.
2
+ File: packages/ui/snippets/shot-grid.html | Map: screenshots -> browser frame with a glow.
3
+ Class API (modifiers are extra classes / attributes on the same element):
4
+ .oc-shot-grid: Auto-fit grid; --oc-shot-min is the minimum column width (18rem).
5
+ .oc-shot: Figure: image (or picture) with object-fit: contain, --oc-shot-ratio (16 / 10), caption under it; a link or button around the image shows a zoom cursor.
6
+ .oc-browser-frame--glow: Browser frame with a shadow in --oc-accent-from; the screenshot zooms in a little on hover.
7
+ .oc-browser-frame__mark: A product mark or tile on the bottom end corner of the frame.
8
+ -->
9
+ <div class="oc-shot-grid" style="inline-size:100%">
10
+ <figure class="oc-shot">
11
+ <a href="/img/blocks/dashboard-01.jpg"><img src="/img/blocks/dashboard-01.jpg" alt="Dashboard" loading="lazy" width="640" height="400"></a>
12
+ <figcaption>Dashboard with the figures of the day</figcaption>
13
+ </figure>
14
+ <figure class="oc-shot">
15
+ <a href="/img/blocks/data-table.jpg"><img src="/img/blocks/data-table.jpg" alt="Customer list" loading="lazy" width="640" height="400"></a>
16
+ <figcaption>Customer list with filters</figcaption>
17
+ </figure>
18
+ <figure class="oc-shot">
19
+ <a href="/img/blocks/product-detail.jpg"><img src="/img/blocks/product-detail.jpg" alt="Product page" loading="lazy" width="640" height="400"></a>
20
+ <figcaption>Product page with stock and documents</figcaption>
21
+ </figure>
22
+ </div>
23
+ <div class="oc-browser-frame oc-browser-frame--glow oc-accent--green" style="inline-size:min(100%, 34rem)">
24
+ <div class="oc-browser-frame__bar"><i></i><i></i><i></i></div>
25
+ <img class="oc-browser-frame__body" src="/img/blocks/dashboard-01.jpg" alt="Dashboard of Product 1" width="640" height="400">
26
+ <span class="oc-browser-frame__mark oc-icon-tile oc-icon-tile--lg oc-accent--green" aria-hidden="true"><iconify-icon icon="mdi:chart-box-outline"></iconify-icon></span>
27
+ </div>
@@ -18,7 +18,7 @@
18
18
  <div class="oc-sidebar-header">
19
19
  <a class="oc-sidebar-menu-button oc-sidebar-menu-button--lg" href="#">
20
20
  <svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 11l9-8 9 8v10a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1z"/></svg>
21
- <span class="oc-sidebar-menu-label"><strong>OmniaDesk</strong></span>
21
+ <span class="oc-sidebar-menu-label"><strong>Company 1</strong></span>
22
22
  </a>
23
23
  </div>
24
24
  <div class="oc-sidebar-content">
@@ -48,8 +48,8 @@
48
48
  </div>
49
49
  <div class="oc-sidebar-footer">
50
50
  <div class="oc-user">
51
- <span class="oc-avatar oc-avatar--sm">SC</span>
52
- <span class="oc-user-text"><span class="oc-user-name">Serge Cools</span><span class="oc-user-email">serge@example.com</span></span>
51
+ <span class="oc-avatar oc-avatar--sm">U1</span>
52
+ <span class="oc-user-text"><span class="oc-user-name">User 1</span><span class="oc-user-email">user1@company1.example</span></span>
53
53
  </div>
54
54
  </div>
55
55
  </aside>
@@ -0,0 +1,34 @@
1
+ <!-- OmniaUI component: spec-list - Technical specifications in named groups: label and value rows, two columns when there is room. Needs @birdycom/omniaui CSS.
2
+ File: packages/ui/snippets/spec-list.html | Map: specifications.
3
+ Class API (modifiers are extra classes / attributes on the same element):
4
+ .oc-spec-list: The list (a container): groups side by side from 40rem wide. --stack keeps one column.
5
+ .oc-spec-group / __title: A group and its title (small caps, an optional icon).
6
+ dl.oc-spec-group__rows > .oc-spec-row: The rows: a <div> with <dt> (label) and <dd> (value; a <small> inside is a quiet unit or note).
7
+ -->
8
+ <div class="oc-spec-list">
9
+ <section class="oc-spec-group">
10
+ <h3 class="oc-spec-group__title">Dimensions</h3>
11
+ <dl class="oc-spec-group__rows">
12
+ <div class="oc-spec-row"><dt>Height</dt><dd>52 cm</dd></div>
13
+ <div class="oc-spec-row"><dt>Shade diameter</dt><dd>28 cm</dd></div>
14
+ <div class="oc-spec-row"><dt>Base</dt><dd>18 × 18 cm</dd></div>
15
+ <div class="oc-spec-row"><dt>Weight</dt><dd>2.4 kg</dd></div>
16
+ </dl>
17
+ </section>
18
+ <section class="oc-spec-group">
19
+ <h3 class="oc-spec-group__title">Electrical</h3>
20
+ <dl class="oc-spec-group__rows">
21
+ <div class="oc-spec-row"><dt>Lamp holder</dt><dd>E27 <small>max. 40 W</small></dd></div>
22
+ <div class="oc-spec-row"><dt>Cable</dt><dd>1.8 m, with switch</dd></div>
23
+ <div class="oc-spec-row"><dt>Energy class</dt><dd>A+</dd></div>
24
+ </dl>
25
+ </section>
26
+ <section class="oc-spec-group">
27
+ <h3 class="oc-spec-group__title">Article</h3>
28
+ <dl class="oc-spec-group__rows">
29
+ <div class="oc-spec-row"><dt>Article number</dt><dd>PRD-0001</dd></div>
30
+ <div class="oc-spec-row"><dt>EAN</dt><dd>5400000000010</dd></div>
31
+ <div class="oc-spec-row"><dt>Warranty</dt><dd>24 months</dd></div>
32
+ </dl>
33
+ </section>
34
+ </div>
@@ -0,0 +1,20 @@
1
+ <!-- OmniaUI component: stock - Stock status with a colored dot: in stock, low, out of stock or on order. Needs @birdycom/omniaui CSS.
2
+ File: packages/ui/snippets/stock.html | Map: stock.
3
+ Class API (modifiers are extra classes / attributes on the same element):
4
+ .oc-stock: A dot and the text. Without data-level the dot is green (in stock).
5
+ data-level="low" / "out" / "order": Orange (only a few left), red (out of stock), blue (on order).
6
+ .oc-stock__count / __note: A bold number ("12") and a quiet extra ("delivered in 2–3 days").
7
+ .oc-stock--badge: A tinted pill for tables and product cards.
8
+ -->
9
+ <div class="flex flex-column gap-1">
10
+ <span class="oc-stock"><span><span class="oc-stock__count">24</span> in stock</span> <span class="oc-stock__note">· delivered in 1–2 days</span></span>
11
+ <span class="oc-stock" data-level="low">Only <span class="oc-stock__count">3</span> left</span>
12
+ <span class="oc-stock" data-level="out">Out of stock</span>
13
+ <span class="oc-stock" data-level="order">On order <span class="oc-stock__note">· expected 14 November</span></span>
14
+ <div class="flex flex-wrap gap-0.5">
15
+ <span class="oc-stock oc-stock--badge">In stock</span>
16
+ <span class="oc-stock oc-stock--badge" data-level="low">Low</span>
17
+ <span class="oc-stock oc-stock--badge" data-level="out">Out</span>
18
+ <span class="oc-stock oc-stock--badge" data-level="order">On order</span>
19
+ </div>
20
+ </div>
@@ -14,15 +14,15 @@
14
14
  </thead>
15
15
  <tbody>
16
16
  <tr>
17
- <td>Ada Lovelace</td><td>ada@example.com</td>
17
+ <td>Contact 1</td><td>info@contact1.example</td>
18
18
  <td class="oc-table-actions oc-table-actions--icons">
19
- <a class="oc-table-actions-icon oc-table-actions-icon--primary" href="#" aria-label="View Ada" title="View"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg></a>
20
- <a class="oc-table-actions-icon" href="#" aria-label="Edit Ada" title="Edit"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 20h9"/><path d="M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z"/></svg></a>
21
- <button class="oc-table-actions-icon oc-table-actions-icon--destructive" type="button" aria-label="Delete Ada" title="Delete"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h18"/><path d="M8 6V4h8v2"/><path d="M19 6l-1 14H6L5 6"/></svg></button>
19
+ <a class="oc-table-actions-icon oc-table-actions-icon--primary" href="#" aria-label="View Contact 1" title="View"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg></a>
20
+ <a class="oc-table-actions-icon" href="#" aria-label="Edit Contact 1" title="Edit"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 20h9"/><path d="M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z"/></svg></a>
21
+ <button class="oc-table-actions-icon oc-table-actions-icon--destructive" type="button" aria-label="Delete Contact 1" title="Delete"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h18"/><path d="M8 6V4h8v2"/><path d="M19 6l-1 14H6L5 6"/></svg></button>
22
22
  </td>
23
23
  </tr>
24
24
  <tr>
25
- <td>Alan Turing</td><td>alan@example.com</td>
25
+ <td>Contact 2</td><td>info@contact2.example</td>
26
26
  <td class="oc-table-actions">
27
27
  <button class="oc-table-actions-more" type="button" popovertarget="oc-table-actions-menu-alan" aria-label="Actions for Alan"></button>
28
28
  <div class="oc-dropdown-menu" id="oc-table-actions-menu-alan" popover>
@@ -15,12 +15,12 @@
15
15
  <tbody>
16
16
  <tr aria-selected="true">
17
17
  <td><input class="oc-checkbox" type="checkbox" checked aria-label="Select Ada"></td>
18
- <td>Ada Lovelace</td><td>ada@example.com</td><td data-numeric>1,250.00</td>
18
+ <td>Contact 1</td><td>info@contact1.example</td><td data-numeric>1,250.00</td>
19
19
  <td class="oc-table-actions"><a class="oc-table-row-action" href="#">Edit</a><button class="oc-table-row-action oc-table-row-action--destructive" type="button">Delete</button></td>
20
20
  </tr>
21
21
  <tr>
22
22
  <td><input class="oc-checkbox" type="checkbox" aria-label="Select Alan"></td>
23
- <td>Alan Turing</td><td>alan@example.com</td><td data-numeric>0.00</td>
23
+ <td>Contact 2</td><td>info@contact2.example</td><td data-numeric>0.00</td>
24
24
  <td class="oc-table-actions"><a class="oc-table-row-action" href="#">Edit</a><button class="oc-table-row-action oc-table-row-action--destructive" type="button">Delete</button></td>
25
25
  </tr>
26
26
  </tbody>
@@ -12,7 +12,7 @@
12
12
  <div class="oc-titlebar-window" style="block-size: 16rem">
13
13
  <header class="oc-titlebar">
14
14
  <div class="oc-titlebar__main">
15
- <span class="oc-titlebar__title">TokenTally</span>
15
+ <span class="oc-titlebar__title">App 1</span>
16
16
  <span class="oc-titlebar__subtitle">Usage</span>
17
17
  </div>
18
18
  <div class="oc-titlebar__actions">
@@ -7,9 +7,9 @@
7
7
  .oc-user-email: Secondary line (truncates)
8
8
  -->
9
9
  <div class="oc-user">
10
- <span class="oc-avatar">SC</span>
10
+ <span class="oc-avatar">U1</span>
11
11
  <span class="oc-user-text">
12
- <span class="oc-user-name">Serge Cools</span>
13
- <span class="oc-user-email">serge@example.com</span>
12
+ <span class="oc-user-name">User 1</span>
13
+ <span class="oc-user-email">user1@company1.example</span>
14
14
  </span>
15
15
  </div>
@@ -1,85 +0,0 @@
1
- /* File: packages/ui/src/parts/app-column-menu.css | Map: menu panel -> title + list -> item states -> footer -> CSS-only column hiding (scope) */
2
- /* Column menu: a popover with one checkbox per table column (column visibility).
3
- CSS-only hiding: wrap the menu and the table in .oc-column-menu-scope and give each checkbox
4
- data-col="<column number>". An unchecked box hides that column (th and td) through :has(). */
5
-
6
- /* Panel look. Without the popover attribute it is a normal block (e.g. inside a sheet or sidebar). */
7
- .oc-column-menu {
8
- inline-size: 14rem;
9
- max-inline-size: calc(100vw - 1rem);
10
- padding: 0.375rem;
11
- font-size: 0.875rem;
12
- color: var(--oc-popover-foreground);
13
- background: var(--oc-popover);
14
- border: 1px solid var(--oc-border);
15
- border-radius: var(--oc-radius);
16
- box-shadow: 0 8px 24px oklch(from var(--color-black-60) l c h / 0.15);
17
- }
18
- /* As a popover: in the top layer, tethered to its trigger like the dropdown. */
19
- .oc-column-menu[popover] {
20
- position: fixed;
21
- inset: auto;
22
- margin: 4px 0 0;
23
- position-area: block-end span-inline-start;
24
- position-try-fallbacks: flip-block, flip-inline;
25
- transition: opacity var(--oc-transition-fast), display var(--oc-transition-fast) allow-discrete, overlay var(--oc-transition-fast) allow-discrete;
26
- }
27
- .oc-column-menu[popover]:popover-open {
28
- display: block;
29
- @starting-style { opacity: 0; }
30
- }
31
-
32
- /* Small heading above the list ("Columns"). */
33
- .oc-column-menu-title {
34
- margin: 0;
35
- padding: 0.375rem 0.5rem 0.25rem;
36
- font-size: 0.75rem;
37
- font-weight: 600;
38
- color: var(--oc-muted-foreground);
39
- }
40
-
41
- /* The list is a <form>, so a native <button type="reset"> restores the default columns. */
42
- .oc-column-menu-list { display: grid; gap: 1px; margin: 0; max-block-size: 18rem; overflow-y: auto; }
43
-
44
- /* One row: label around a checkbox and the column name. */
45
- .oc-column-menu-item {
46
- display: flex;
47
- align-items: center;
48
- gap: 0.5rem;
49
- padding: 0.375rem 0.5rem;
50
- border-radius: calc(var(--oc-radius) - 2px);
51
- cursor: pointer;
52
- user-select: none;
53
- }
54
- .oc-column-menu-item:hover { background: var(--oc-accent); }
55
- .oc-column-menu-item:has(:focus-visible) { outline: 2px solid var(--oc-ring); outline-offset: -2px; }
56
- .oc-column-menu-item input { margin: 0; accent-color: var(--oc-primary); }
57
- /* Locked column (always visible): <input disabled checked>. */
58
- .oc-column-menu-item:has(input:disabled) { color: var(--oc-muted-foreground); cursor: default; }
59
- .oc-column-menu-item:has(input:disabled):hover { background: none; }
60
-
61
- /* Footer row with "Reset" (type="reset") or other small buttons. */
62
- .oc-column-menu-footer {
63
- display: flex;
64
- justify-content: flex-end;
65
- gap: 0.25rem;
66
- margin-block-start: 0.375rem;
67
- padding-block-start: 0.375rem;
68
- border-block-start: 1px solid var(--oc-border);
69
- }
70
-
71
- /* ---- CSS-only column hiding (columns 1 to 10) ---- */
72
- .oc-column-menu-scope:has([data-col="1"]:not(:checked)) .oc-table :is(th, td):nth-child(1),
73
- .oc-column-menu-scope:has([data-col="2"]:not(:checked)) .oc-table :is(th, td):nth-child(2),
74
- .oc-column-menu-scope:has([data-col="3"]:not(:checked)) .oc-table :is(th, td):nth-child(3),
75
- .oc-column-menu-scope:has([data-col="4"]:not(:checked)) .oc-table :is(th, td):nth-child(4),
76
- .oc-column-menu-scope:has([data-col="5"]:not(:checked)) .oc-table :is(th, td):nth-child(5),
77
- .oc-column-menu-scope:has([data-col="6"]:not(:checked)) .oc-table :is(th, td):nth-child(6),
78
- .oc-column-menu-scope:has([data-col="7"]:not(:checked)) .oc-table :is(th, td):nth-child(7),
79
- .oc-column-menu-scope:has([data-col="8"]:not(:checked)) .oc-table :is(th, td):nth-child(8),
80
- .oc-column-menu-scope:has([data-col="9"]:not(:checked)) .oc-table :is(th, td):nth-child(9),
81
- .oc-column-menu-scope:has([data-col="10"]:not(:checked)) .oc-table :is(th, td):nth-child(10) { display: none; }
82
-
83
- @media (prefers-reduced-motion: reduce) {
84
- .oc-column-menu[popover] { transition: none; }
85
- }
@@ -1,38 +0,0 @@
1
- <!-- OmniaUI component: column-menu - Column visibility checklist in a popover; hides table columns with :has() - no JavaScript. Needs @birdycom/omniaui CSS.
2
- File: packages/ui/snippets/column-menu.html | Map: scope -> toolbar with trigger -> popover (title, form with checkboxes, reset) -> table
3
- Class API (modifiers are extra classes / attributes on the same element):
4
- .oc-column-menu-scope: Wrapper around menu + table. An unchecked [data-col="n"] hides column n (1-10) of the .oc-table inside.
5
- .oc-column-menu[popover]: Popover panel, opened with button[popovertarget]
6
- .oc-column-menu-title: Small heading
7
- form.oc-column-menu-list: The checkbox list (a form, so button type="reset" restores the defaults)
8
- .oc-column-menu-item: label + input[type=checkbox][data-col]. State: input disabled = locked column.
9
- .oc-column-menu-footer: Row for Reset / Done buttons
10
- Slots: title, one item per column, footer buttons
11
- -->
12
- <div class="oc-column-menu-scope">
13
- <div class="oc-table-toolbar">
14
- <span class="oc-table-toolbar-spacer"></span>
15
- <button class="oc-btn oc-btn--outline oc-btn--sm" type="button" popovertarget="oc-column-menu-demo">Columns</button>
16
- </div>
17
- <div class="oc-column-menu" id="oc-column-menu-demo" popover>
18
- <p class="oc-column-menu-title">Visible columns</p>
19
- <form class="oc-column-menu-list">
20
- <label class="oc-column-menu-item"><input type="checkbox" data-col="1" checked disabled> Name</label>
21
- <label class="oc-column-menu-item"><input type="checkbox" data-col="2" checked> E-mail</label>
22
- <label class="oc-column-menu-item"><input type="checkbox" data-col="3" checked> City</label>
23
- <label class="oc-column-menu-item"><input type="checkbox" data-col="4"> Phone</label>
24
- <div class="oc-column-menu-footer">
25
- <button class="oc-btn oc-btn--ghost oc-btn--sm" type="reset">Reset</button>
26
- </div>
27
- </form>
28
- </div>
29
- <div class="oc-table-wrap">
30
- <table class="oc-table">
31
- <thead><tr><th>Name</th><th>E-mail</th><th>City</th><th>Phone</th></tr></thead>
32
- <tbody>
33
- <tr><td>Ada Lovelace</td><td>ada@example.com</td><td>London</td><td>+44 20 7946 0001</td></tr>
34
- <tr><td>Alan Turing</td><td>alan@example.com</td><td>Manchester</td><td>+44 161 496 0002</td></tr>
35
- </tbody>
36
- </table>
37
- </div>
38
- </div>