@ibobbyts/svelte-ui-utils 0.2.8 → 0.2.9

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.
package/README.md CHANGED
@@ -255,6 +255,7 @@ countdown bar.
255
255
  options={pageSizeOptions}
256
256
  ariaLabel="Rows"
257
257
  placement="down"
258
+ menuAlign="left"
258
259
  onChange={(next) => {
259
260
  pageSize = next;
260
261
  }}
@@ -263,7 +264,11 @@ countdown bar.
263
264
 
264
265
  `Dropdown` is a controlled select-like component for simple option lists. Use
265
266
  `placement="up"` when the menu should open above the trigger, such as bottom
266
- pagination bars. `DataTable` uses this same component for its page-size picker.
267
+ pagination bars. Use `menuAlign="left"` when the expanded menu should share the
268
+ trigger's left edge; the default is `right` for backward compatibility.
269
+ `fitContent` can be combined with `menuAlign="left"` to size the menu to its
270
+ longest option while keeping its left edge aligned. `DataTable` uses this same
271
+ component for its page-size picker.
267
272
 
268
273
  ## DataTable
269
274
 
@@ -488,23 +493,22 @@ inside a theme root:
488
493
 
489
494
  ## Release
490
495
 
491
- Publishing is release-driven:
492
-
493
496
  Do not publish this package as part of consumer-app local integration work.
494
- Create tags, GitHub Releases, or package publishes only when a release is
495
- explicitly requested.
497
+ Publish only when a release is explicitly requested. Releases are published
498
+ directly from the maintainer's machine to npm; do not create a GitHub Actions
499
+ secret or a GitHub Release for package publishing.
500
+
501
+ The npm token is exported as `NPM_TOKEN` from `~/.zshrc`. After updating the
502
+ package version, run the validation and publish commands locally:
496
503
 
497
504
  ```bash
498
- gh repo create iBobbyTS/svelte-ui-utils --public --source . --remote origin --push
499
- git tag v0.2.0
500
- git push origin v0.2.0
501
- gh release create v0.2.0 --title "v0.2.0" --notes "Publish public npm package"
502
- gh run watch
505
+ npm run check
506
+ npm test
507
+ npm run package
508
+ npm publish --access public
503
509
  ```
504
510
 
505
- The release workflow runs checks and publishes to the public npm registry with
506
- the repository secret `NPM_TOKEN`. The token must have permission to publish
507
- `@ibobbyts/svelte-ui-utils`; do not commit it to this repository.
511
+ Never commit the npm token or copy it into repository settings.
508
512
 
509
513
  ## Bun install verification
510
514
 
@@ -2,13 +2,14 @@
2
2
 
3
3
  <script lang="ts">
4
4
  import { onDestroy, tick } from 'svelte';
5
- import type { DropdownChangeHandler, DropdownOption, DropdownPlacement, DropdownValue } from './types.js';
5
+ import type { DropdownChangeHandler, DropdownMenuAlign, DropdownOption, DropdownPlacement, DropdownValue } from './types.js';
6
6
 
7
7
  export let id: string | undefined = undefined;
8
8
  export let value: DropdownValue = '';
9
9
  export let options: DropdownOption[] = [];
10
10
  export let ariaLabel: string | undefined = undefined;
11
11
  export let placement: DropdownPlacement = 'down';
12
+ export let menuAlign: DropdownMenuAlign = 'right';
12
13
  export let fitViewport = false;
13
14
  export let fitContent = false;
14
15
  export let disabled = false;
@@ -224,6 +225,8 @@
224
225
  class="suu-dropdown__menu"
225
226
  class:suu-dropdown__menu--up={placement === 'up'}
226
227
  class:suu-dropdown__menu--down={placement === 'down'}
228
+ class:suu-dropdown__menu--left={menuAlign === 'left'}
229
+ class:suu-dropdown__menu--right={menuAlign === 'right'}
227
230
  class:suu-dropdown__menu--fit-content={fitContent}
228
231
  >
229
232
  <div class="suu-dropdown__panel" role="listbox" aria-label={ariaLabel}>
@@ -1,4 +1,4 @@
1
- import type { DropdownChangeHandler, DropdownOption, DropdownPlacement, DropdownValue } from './types.js';
1
+ import type { DropdownChangeHandler, DropdownMenuAlign, DropdownOption, DropdownPlacement, DropdownValue } from './types.js';
2
2
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
3
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
4
  $$bindings?: Bindings;
@@ -18,6 +18,7 @@ declare const Dropdown: $$__sveltets_2_IsomorphicComponent<{
18
18
  options?: DropdownOption[];
19
19
  ariaLabel?: string | undefined;
20
20
  placement?: DropdownPlacement;
21
+ menuAlign?: DropdownMenuAlign;
21
22
  fitViewport?: boolean;
22
23
  fitContent?: boolean;
23
24
  disabled?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/Dropdown.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAiO1G,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,QAAQ;SAVkM,MAAM,GAAG,SAAS;YAAU,aAAa;cAAY,cAAc,EAAE;gBAAc,MAAM,GAAG,SAAS;gBAAc,iBAAiB;;;;eAA2G,qBAAqB,GAAG,SAAS;;;kBAUnY,CAAC;AAC5E,KAAK,QAAQ,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Dropdown.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/Dropdown.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAkO7H,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,QAAQ;SAVyN,MAAM,GAAG,SAAS;YAAU,aAAa;cAAY,cAAc,EAAE;gBAAc,MAAM,GAAG,SAAS;gBAAc,iBAAiB;gBAAc,iBAAiB;;;;eAA2G,qBAAqB,GAAG,SAAS;;;kBAUzb,CAAC;AAC5E,KAAK,QAAQ,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,eAAe,QAAQ,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { default as Dropdown } from './Dropdown.svelte';
2
- export type { DropdownChangeHandler, DropdownOption, DropdownPlacement, DropdownValue } from './types.js';
2
+ export type { DropdownChangeHandler, DropdownMenuAlign, DropdownOption, DropdownPlacement, DropdownValue } from './types.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export type DropdownValue = string | number;
2
2
  export type DropdownPlacement = 'up' | 'down';
3
+ export type DropdownMenuAlign = 'left' | 'right';
3
4
  export interface DropdownOption {
4
5
  label: string;
5
6
  value: DropdownValue;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/dist/style.css CHANGED
@@ -1154,6 +1154,7 @@
1154
1154
  position: absolute;
1155
1155
  top: calc(100% + 6px);
1156
1156
  right: 0;
1157
+ left: auto;
1157
1158
  z-index: 100;
1158
1159
  min-width: 100%;
1159
1160
  overflow: hidden;
@@ -1163,6 +1164,16 @@
1163
1164
  box-shadow: 0 18px 42px rgb(15 23 42 / 0.16);
1164
1165
  }
1165
1166
 
1167
+ .suu-dropdown__menu--left {
1168
+ right: auto;
1169
+ left: 0;
1170
+ }
1171
+
1172
+ .suu-dropdown__menu--right {
1173
+ right: 0;
1174
+ left: auto;
1175
+ }
1176
+
1166
1177
  .suu-dropdown__menu--up {
1167
1178
  top: auto;
1168
1179
  bottom: calc(100% + 6px);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibobbyts/svelte-ui-utils",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "description": "Reusable Svelte 5 UI utilities for dialogs, toast notifications, dropdown search, and data tables.",
5
5
  "type": "module",
6
6
  "license": "MIT",