nitro-web 0.0.173 → 0.0.178

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.
@@ -10,7 +10,7 @@ type resetInstructionsProps = {
10
10
 
11
11
  export function ResetInstructions({ className, elements, redirectTo }: resetInstructionsProps) {
12
12
  const navigate = useNavigate()
13
- const isLoading = useState(false)
13
+ const [isLoading, setIsLoading] = useState(false)
14
14
  const [, setStore] = useTracked()
15
15
  const [state, setState] = useState({ email: '', errors: [] as Errors })
16
16
 
@@ -20,7 +20,8 @@ export function ResetInstructions({ className, elements, redirectTo }: resetInst
20
20
 
21
21
  async function onSubmit (event: React.FormEvent<HTMLFormElement>) {
22
22
  try {
23
- await request('post /api/reset-instructions', state, event, isLoading, setState)
23
+ if (isLoading) return
24
+ await request('post /api/reset-instructions', state, event, setIsLoading, setState)
24
25
  setStore((s) => ({ ...s, message: 'Done! Please check your email.' }))
25
26
  navigate(redirectTo || '/signin')
26
27
  } catch (e) {
@@ -43,7 +44,7 @@ export function ResetInstructions({ className, elements, redirectTo }: resetInst
43
44
  <FormError state={state} className="pt-2" />
44
45
  </div>
45
46
 
46
- <Elements.Button className="w-full" isLoading={isLoading[0]} type="submit">Email me a reset password link</Elements.Button>
47
+ <Elements.Button className="w-full" isLoading={isLoading} type="submit">Email me a reset password link</Elements.Button>
47
48
  </form>
48
49
  </div>
49
50
  )
@@ -52,7 +53,7 @@ export function ResetInstructions({ className, elements, redirectTo }: resetInst
52
53
  export function ResetPassword({ className, elements, redirectTo }: resetInstructionsProps) {
53
54
  const navigate = useNavigate()
54
55
  const params = useParams()
55
- const isLoading = useState(false)
56
+ const [isLoading, setIsLoading] = useState(false)
56
57
  const [, setStore] = useTracked()
57
58
  const [state, setState] = useState(() => ({
58
59
  password: '',
@@ -67,7 +68,8 @@ export function ResetPassword({ className, elements, redirectTo }: resetInstruct
67
68
 
68
69
  async function onSubmit (event: React.FormEvent<HTMLFormElement>) {
69
70
  try {
70
- const data = await request('post /api/reset-password', state, event, isLoading, setState)
71
+ if (isLoading) return
72
+ const data = await request('post /api/reset-password', state, event, setIsLoading, setState)
71
73
  setStore((s) => ({ ...s, ...data }))
72
74
  setTimeout(() => navigate(redirectTo || '/'), 10) // wait for setStore
73
75
  } catch (e) {
@@ -94,7 +96,7 @@ export function ResetPassword({ className, elements, redirectTo }: resetInstruct
94
96
  <FormError state={state} className="pt-2" />
95
97
  </div>
96
98
 
97
- <Elements.Button class="w-full" isLoading={isLoading[0]} type="submit">Reset Password</Elements.Button>
99
+ <Elements.Button class="w-full" isLoading={isLoading} type="submit">Reset Password</Elements.Button>
98
100
  </form>
99
101
  </div>
100
102
  )
@@ -12,7 +12,7 @@ export function Signin({ className, elements, redirectTo }: signinProps) {
12
12
  const navigate = useNavigate()
13
13
  const location = useLocation()
14
14
  const isSignout = location.pathname == '/signout'
15
- const isLoading = useState(isSignout)
15
+ const [isLoading, setIsLoading] = useState(isSignout)
16
16
  const [, setStore] = useTracked()
17
17
  const [state, setState] = useState({
18
18
  email: injectedConfig.env == 'development' ? (injectedConfig.placeholderEmail || '') : '',
@@ -35,18 +35,19 @@ export function Signin({ className, elements, redirectTo }: signinProps) {
35
35
  setStore((s) => ({ ...s, user: undefined }))
36
36
  // util.axios().get('/api/signout')
37
37
  Promise.resolve()
38
- .then(() => isLoading[1](false))
38
+ .then(() => setIsLoading(false))
39
39
  .then(() => updateJwt())
40
40
  .then(() => navigate({ pathname: '/signin', search: location.search }, { replace: true }))
41
- .catch(err => (console.error(err), isLoading[1](false)))
41
+ .catch(err => (console.error(err), setIsLoading(false)))
42
42
  }
43
43
  }, [isSignout])
44
44
 
45
45
  async function onSubmit (e: React.FormEvent<HTMLFormElement>) {
46
46
  try {
47
- const data = await request('post /api/signin', state, e, isLoading, setState)
47
+ if (isLoading) return
48
+ const data = await request('post /api/signin', state, e, setIsLoading, setState)
48
49
  // Keep it loading until we navigate
49
- isLoading[1](true)
50
+ setIsLoading(true)
50
51
  setStore((s) => ({ ...s, ...data }))
51
52
  setTimeout(() => { // wait for setStore
52
53
  if (location.search.includes('redirect')) navigate(location.search.replace('?redirect=', ''))
@@ -80,7 +81,7 @@ export function Signin({ className, elements, redirectTo }: signinProps) {
80
81
  <FormError state={state} className="pt-2" />
81
82
  </div>
82
83
 
83
- <Elements.Button class="w-full" isLoading={isLoading[0]} type="submit">Sign In</Elements.Button>
84
+ <Elements.Button class="w-full" isLoading={isLoading} type="submit">Sign In</Elements.Button>
84
85
  </form>
85
86
  </div>
86
87
  )
@@ -10,7 +10,7 @@ type signupProps = {
10
10
 
11
11
  export function Signup({ className, elements, redirectTo }: signupProps) {
12
12
  const navigate = useNavigate()
13
- const isLoading = useState(false)
13
+ const [isLoading, setIsLoading] = useState(false)
14
14
  const [, setStore] = useTracked()
15
15
  const [state, setState] = useState({
16
16
  email: injectedConfig.env === 'development' ? (injectedConfig.placeholderEmail || '') : '',
@@ -26,7 +26,8 @@ export function Signup({ className, elements, redirectTo }: signupProps) {
26
26
 
27
27
  async function onSubmit (e: React.FormEvent<HTMLFormElement>) {
28
28
  try {
29
- const data = await request('post /api/signup', state, e, isLoading, setState)
29
+ if (isLoading) return
30
+ const data = await request('post /api/signup', state, e, setIsLoading, setState)
30
31
  setStore((prev) => ({ ...prev, ...data }))
31
32
  setTimeout(() => navigate(redirectTo || '/'), 10) // wait for setStore
32
33
  } catch (e) {
@@ -66,7 +67,7 @@ export function Signup({ className, elements, redirectTo }: signupProps) {
66
67
  <FormError state={state} className="pt-2" />
67
68
  </div>
68
69
 
69
- <Elements.Button class="w-full" isLoading={isLoading[0]} type="submit">Create Account</Elements.Button>
70
+ <Elements.Button class="w-full" isLoading={isLoading} type="submit">Create Account</Elements.Button>
70
71
  </form>
71
72
  </div>
72
73
  )
@@ -43,7 +43,7 @@ export type TableProps<T> = {
43
43
  rowClassName?: string
44
44
  rowClassNameFn?: (row: T, i: number) => string
45
45
  columnClassName?: string
46
- columnClassNameFn?: (row: T, i: number) => string
46
+ columnClassNameFn?: (col: TableColumn, row: T|undefined, i: number) => string
47
47
  columnSelectedClassName?: string
48
48
  columnHeaderClassName?: string
49
49
  checkboxClassName?: string
@@ -181,6 +181,7 @@ export function Table<T extends TableRow>({
181
181
  getAlignClass(col.align),
182
182
  columnClassName,
183
183
  columnHeaderClassName,
184
+ columnClassNameFn ? columnClassNameFn(col, undefined, j) : '',
184
185
  col.className
185
186
  )}
186
187
  >
@@ -260,7 +261,7 @@ export function Table<T extends TableRow>({
260
261
  _columnClassName,
261
262
  getAlignClass(col.align),
262
263
  columnClassName,
263
- columnClassNameFn ? columnClassNameFn(row, i) : '',
264
+ columnClassNameFn ? columnClassNameFn(col, row, i) : '',
264
265
  col.className,
265
266
  isSelected ? `bg-gray-50 ${columnSelectedClassName||''}` : ''
266
267
  )}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nitro-web",
3
- "version": "0.0.173",
3
+ "version": "0.0.178",
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 🚀",
@@ -26,6 +26,7 @@
26
26
  "major": "npm run types && standard-version -a --release-as major && npm publish && cd ../webpack && npm publish",
27
27
  "minor": "npm run types && standard-version -a --release-as minor && npm publish && cd ../webpack && npm publish",
28
28
  "patch": "npm run types && standard-version -a --release-as patch && npm publish && cd ../webpack && npm publish",
29
+ "publish": "npm publish && cd ../webpack && npm publish",
29
30
  "types": "tsc util.js ./server/index.js --declaration --declarationMap --allowJs --emitDeclarationOnly --jsx react-jsx --esModuleInterop --skipLibCheck --outDir types && cd ../webpack && npm run types -w . && cd ../core"
30
31
  },
31
32
  "dependencies": {