nitro-web 0.0.110 → 0.0.112

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.
@@ -11,7 +11,14 @@ type DropdownProps = {
11
11
  css?: string
12
12
  /** The direction of the menu **/
13
13
  dir?: 'bottom-left'|'bottom-right'|'top-left'|'top-right'
14
- options?: { label: string|React.ReactNode, onClick?: Function, isSelected?: boolean, icon?: React.ReactNode, className?: string }[]
14
+ options?: {
15
+ label: string|React.ReactNode,
16
+ onClick?: Function,
17
+ isSelected?: boolean,
18
+ icon?: React.ReactNode,
19
+ iconLeft?: React.ReactNode,
20
+ className?: string
21
+ }[]
15
22
  /** Whether the dropdown is hoverable **/
16
23
  isHoverable?: boolean
17
24
  /** The content to render inside the top of the dropdown **/
@@ -22,6 +29,7 @@ type DropdownProps = {
22
29
  menuToggles?: boolean
23
30
  /** The minimum width of the menu **/
24
31
  minWidth?: number | string
32
+ maxHeight?: number | string
25
33
  toggleCallback?: (isActive: boolean) => void
26
34
  }
27
35
 
@@ -39,6 +47,7 @@ export const Dropdown = forwardRef(function Dropdown({
39
47
  menuIsOpen,
40
48
  menuToggles=true,
41
49
  minWidth,
50
+ maxHeight,
42
51
  toggleCallback,
43
52
  }: DropdownProps, ref) {
44
53
  // https://letsbuildui.dev/articles/building-a-dropdown-menu-component-with-react-hooks
@@ -156,7 +165,11 @@ export const Dropdown = forwardRef(function Dropdown({
156
165
  })
157
166
  }
158
167
  <ul
159
- style={{ minWidth }}
168
+ style={{
169
+ minWidth: minWidth,
170
+ maxHeight: maxHeight,
171
+ ...(maxHeight ? { overflow: 'auto' } : {}),
172
+ }}
160
173
  class={
161
174
  twMerge(`${menuStyle} ${ready ? 'is-ready' : ''} absolute invisible opacity-0 select-none min-w-full z-[1] ${menuClassName||''}`)}
162
175
  >
@@ -170,6 +183,7 @@ export const Dropdown = forwardRef(function Dropdown({
170
183
  className={twMerge(`${optionStyle} ${option.className} ${menuOptionClassName}`)}
171
184
  onClick={(e: React.MouseEvent) => onClick(option, e)}
172
185
  >
186
+ { !!option.iconLeft && option.iconLeft }
173
187
  <span class="flex-auto">{option.label}</span>
174
188
  { !!option.icon && option.icon }
175
189
  { option.isSelected && <CheckCircleIcon className="size-[22px] text-primary -my-1 -mx-0.5" /> }
@@ -124,7 +124,7 @@ export function Table<T extends TableRow>({
124
124
  return (
125
125
  <div
126
126
  style={{ marginTop: -rowGap }}
127
- className={twMerge('overflow-x-auto thin-scrollbar', className)}
127
+ className={twMerge('overflow-x-auto thin-scrollbar min-h-full', className)}
128
128
  >
129
129
  <div
130
130
  style={{ borderSpacing: `0 ${rowGap}px` }}
@@ -98,6 +98,16 @@ export function FieldCurrency({ currency='nzd', currencies, format, onChange, va
98
98
  let _format = format || defaultFormat
99
99
  const _currencies = currencies ?? defaultCurrencies
100
100
  const currencyObject = _currencies[currency as keyof typeof _currencies]
101
+ if (!currencyObject && currencies) {
102
+ console.error(
103
+ `The currency field "${props.name}" is using the currency "${currency}" which is not found in your currencies object`
104
+ )
105
+ } else if (!currencyObject && !currencies) {
106
+ console.error(
107
+ `The currency field "${props.name}" is using the currency "${currency}" which is not found in the
108
+ default currencies, please provide a currencies object.`
109
+ )
110
+ }
101
111
  const symbol = currencyObject ? currencyObject.symbol : ''
102
112
  const digits = currencyObject ? currencyObject.digits : 2
103
113
 
@@ -160,13 +170,59 @@ export function FieldCurrency({ currency='nzd', currencies, format, onChange, va
160
170
  )
161
171
  }
162
172
 
163
- const defaultCurrencies = {
164
- nzd: { symbol: '$', digits: 2 },
165
- aud: { symbol: '$', digits: 2 },
166
- usd: { symbol: '$', digits: 2 },
167
- eur: { symbol: '', digits: 2 },
168
- gbp: { symbol: '£', digits: 2 },
169
- btc: { symbol: '', digits: 8 },
173
+ export const defaultCurrencies: { [key: string]: { name: string, symbol: string, digits: number } } = {
174
+ nzd: { name: 'New Zealand Dollar', symbol: '$', digits: 2 },
175
+ aud: { name: 'Australian Dollar', symbol: '$', digits: 2 },
176
+ usd: { name: 'US Dollar', symbol: '$', digits: 2 },
177
+ btc: { name: 'Bitcoin', symbol: '', digits: 8 },
178
+ aed: { name: 'UAE Dirham', symbol: 'د.إ', digits: 2 },
179
+ ars: { name: 'Argentine Peso', symbol: '$', digits: 2 },
180
+ bdt: { name: 'Bangladeshi Taka', symbol: '৳', digits: 2 },
181
+ bhd: { name: 'Bahraini Dinar', symbol: '.د.ب', digits: 3 },
182
+ brl: { name: 'Brazilian Real', symbol: 'R$', digits: 2 },
183
+ cad: { name: 'Canadian Dollar', symbol: '$', digits: 2 },
184
+ chf: { name: 'Swiss Franc', symbol: 'Fr', digits: 2 },
185
+ clp: { name: 'Chilean Peso', symbol: '$', digits: 0 },
186
+ cny: { name: 'Chinese Yuan', symbol: '¥', digits: 2 },
187
+ cop: { name: 'Colombian Peso', symbol: '$', digits: 2 },
188
+ czk: { name: 'Czech Koruna', symbol: 'Kč', digits: 2 },
189
+ dkk: { name: 'Danish Krone', symbol: 'kr', digits: 2 },
190
+ egp: { name: 'Egyptian Pound', symbol: '£', digits: 2 },
191
+ eur: { name: 'Euro', symbol: '€', digits: 2 },
192
+ gbp: { name: 'Great Britain Pound', symbol: '£', digits: 2 },
193
+ hkd: { name: 'Hong Kong Dollar', symbol: '$', digits: 2 },
194
+ huf: { name: 'Hungarian Forint', symbol: 'Ft', digits: 0 },
195
+ idr: { name: 'Indonesian Rupiah', symbol: 'Rp', digits: 0 },
196
+ ils: { name: 'Israeli Shekel', symbol: '₪', digits: 2 },
197
+ inr: { name: 'Indian Rupee', symbol: '₹', digits: 2 },
198
+ jod: { name: 'Jordanian Dinar', symbol: 'د.ا', digits: 3 },
199
+ jpy: { name: 'Japanese Yen', symbol: '¥', digits: 0 },
200
+ kes: { name: 'Kenyan Shilling', symbol: 'Sh', digits: 2 },
201
+ krw: { name: 'South Korean Won', symbol: '₩', digits: 0 },
202
+ kwd: { name: 'Kuwaiti Dinar', symbol: 'د.ك', digits: 3 },
203
+ lkr: { name: 'Sri Lankan Rupee', symbol: 'Rs', digits: 2 },
204
+ mad: { name: 'Moroccan Dirham', symbol: 'د.م.', digits: 2 },
205
+ mxn: { name: 'Mexican Peso', symbol: '$', digits: 2 },
206
+ myr: { name: 'Malaysian Ringgit', symbol: 'RM', digits: 2 },
207
+ ngn: { name: 'Nigerian Naira', symbol: '₦', digits: 2 },
208
+ nok: { name: 'Norwegian Krone', symbol: 'kr', digits: 2 },
209
+ omr: { name: 'Omani Rial', symbol: '﷼', digits: 3 },
210
+ pen: { name: 'Peruvian Sol', symbol: 'S/', digits: 2 },
211
+ php: { name: 'Philippine Peso', symbol: '₱', digits: 2 },
212
+ pkt: { name: 'Pakistani Rupee', symbol: '₨', digits: 2 },
213
+ pln: { name: 'Polish Zloty', symbol: 'zł', digits: 2 },
214
+ qar: { name: 'Qatari Riyal', symbol: '﷼', digits: 2 },
215
+ ron: { name: 'Romanian Leu', symbol: 'lei', digits: 2 },
216
+ rub: { name: 'Russian Ruble', symbol: '₽', digits: 2 },
217
+ sar: { name: 'Saudi Riyal', symbol: '﷼', digits: 2 },
218
+ sek: { name: 'Swedish Krona', symbol: 'kr', digits: 2 },
219
+ sgd: { name: 'Singapore Dollar', symbol: '$', digits: 2 },
220
+ thb: { name: 'Thai Baht', symbol: '฿', digits: 2 },
221
+ try: { name: 'Turkish Lira', symbol: '₺', digits: 2 },
222
+ twd: { name: 'New Taiwan Dollar', symbol: 'NT$', digits: 2 },
223
+ uah: { name: 'Ukrainian Hryvnia', symbol: '₴', digits: 2 },
224
+ vnd: { name: 'Vietnamese Dong', symbol: '₫', digits: 0 },
225
+ zar: { name: 'South African Rand', symbol: 'R', digits: 2 },
170
226
  }
171
227
 
172
228
  const defaultFormat = '¤#,##0.00'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nitro-web",
3
- "version": "0.0.110",
3
+ "version": "0.0.112",
4
4
  "repository": "github:boycce/nitro-web",
5
5
  "homepage": "https://boycce.github.io/nitro-web/",
6
6
  "description": "Nitro is a battle-tested, modular base project to turbocharge your projects, styled using Tailwind 🚀",