hr_lite 0.21.1 → 0.21.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db70cbffad7689e4412f2a1443c2de2e95eee6e65ffe9f7463a4681ac70fa798
4
- data.tar.gz: 4b8621274a50822b8d02ca5afc66c6f15cc477729c8127b070a272a1ee5e08ad
3
+ metadata.gz: 1a2ff1c82bd28a7f542134062771f3429fa3f2d9883b56fef9ca7e4b3443d12b
4
+ data.tar.gz: 0a6c75ff2b12cfd705015f30126f4a3352614323fe16beb31ec2604a65d44d86
5
5
  SHA512:
6
- metadata.gz: 2f240e57b3ad68b35f5370b055442f934db64331830081d983aef13ee398be441974d0dcc5831400b11246c6b2be4e3dd5e640f7c7a38ae47cdd8b0289807d1b
7
- data.tar.gz: 90dc816afaeb837c24015a0b25e09f0803c0a3b1626c8cff268519dfe5a97879b6751516f8119243e7374592835c6b60b8755223648cdf83a16855e0a24db614
6
+ metadata.gz: 9d38f6d0deaebc0e0d8f9b66d2c439280c7fa667ae6e2a800c1c6805007fdba2f8edd742d69103d468492ee3778a0644a60a7f2e0d9d675ea51db9368ff55d2c
7
+ data.tar.gz: 6c7f7c9c4f1316f6de85af950622579a9c23749a52a9a391a2f02ea775cffebfa813d37b6bd1f882d4eac1f96a326f78971d5c743a6fa010cdbfc98bb27da286
data/CHANGELOG.md CHANGED
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.21.3] - 2026-10-09
11
+
12
+ ### Fixed
13
+ - Phones: My attendance, the team calendar and an employee's attendance in admin no longer run wider than the screen once a month has punches; Sa/Su are back and check-in/check-out stack in each day.
14
+ - Phones: a long name or an email as the display name in the top bar no longer widens every screen and pushes the tab bar off.
15
+ - Phones: long links, file names and emails in policies, HR requests, appraisals, flashes and stacked tables (audit trail, approvals, team board, request lists) wrap instead of widening the page or hiding values.
16
+ - Admin employee profile with a salary card fits a phone; payroll and overview tiles go 2×2 below 1100px so amounts stay on one line beside the side rail.
17
+
18
+ ## [0.21.2] - 2026-10-07
19
+
20
+ ### Fixed
21
+ - HR recording leave for an employee on probation is no longer refused by the 1-day-a-month cap; the cap still applies when the employee applies themselves.
22
+
10
23
  ## [0.21.1] - 2026-10-07
11
24
 
12
25
  ### Fixed
@@ -65,7 +65,7 @@
65
65
  }
66
66
  .hrl-appbar__brand { font-weight: 700; font-size: 1.02rem; color: var(--hrl-ink); display: inline-flex; align-items: center; }
67
67
  .hrl-appbar__logo { height: 28px; width: auto; display: block; }
68
- .hrl-appbar__user { margin-left: auto; color: var(--hrl-muted); font-size: .82rem; white-space: nowrap; }
68
+ .hrl-appbar__user { margin-left: auto; color: var(--hrl-muted); font-size: .82rem; white-space: nowrap; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
69
69
 
70
70
  /* Bottom tab bar (phone) */
71
71
  .hrl-tabbar {
@@ -135,13 +135,13 @@
135
135
  }
136
136
 
137
137
  /* Flash */
138
- .hrl-flash { padding: .7rem .9rem; border-radius: var(--hrl-radius-sm); margin-bottom: .85rem; font-size: .9rem; }
138
+ .hrl-flash { padding: .7rem .9rem; border-radius: var(--hrl-radius-sm); margin-bottom: .85rem; font-size: .9rem; overflow-wrap: anywhere; }
139
139
  .hrl-flash--ok { background: var(--hrl-ok-bg); color: var(--hrl-ok); }
140
140
  .hrl-flash--warn { background: var(--hrl-warn-bg); color: var(--hrl-warn); }
141
141
 
142
142
  /* Page scaffold */
143
143
  .hrl-page__head { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin: .25rem 0 .9rem; }
144
- .hrl-page__title { font-size: 1.25rem; font-weight: 700; margin: 0; }
144
+ .hrl-page__title { font-size: 1.25rem; font-weight: 700; margin: 0; overflow-wrap: anywhere; }
145
145
  .hrl-page__sub { color: var(--hrl-muted); font-size: .86rem; margin: .15rem 0 0; width: 100%; }
146
146
  .hrl-page__actions { margin-left: auto; display: flex; flex-wrap: wrap; gap: .5rem; }
147
147
 
@@ -154,13 +154,14 @@
154
154
  .hrl-card__title { font-weight: 650; font-size: .95rem; margin: 0 0 .6rem; }
155
155
  .hrl-card--empty { text-align: center; color: var(--hrl-muted); padding: 1.8rem 1rem; }
156
156
  .hrl-grid { display: grid; gap: .85rem; grid-template-columns: 1fr; }
157
+ .hrl-grid > * { min-width: 0; }
157
158
  @media (min-width: 700px) { .hrl-grid--2 { grid-template-columns: 1fr 1fr; } }
158
159
 
159
160
  /* KPI tiles */
160
- .hrl-kpis { display: grid; grid-template-columns: repeat(2, 1fr); gap: .6rem; margin-bottom: .85rem; }
161
- @media (min-width: 700px) { .hrl-kpis { grid-template-columns: repeat(4, 1fr); } }
161
+ .hrl-kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; margin-bottom: .85rem; }
162
+ @media (min-width: 1100px) { .hrl-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
162
163
  .hrl-kpi { background: var(--hrl-card); border: 1px solid var(--hrl-line); border-radius: var(--hrl-radius); padding: .7rem .8rem; }
163
- .hrl-kpi__value { font-size: 1.35rem; font-weight: 700; }
164
+ .hrl-kpi__value { font-size: 1.35rem; font-weight: 700; overflow-wrap: anywhere; }
164
165
  .hrl-kpi__label { color: var(--hrl-muted); font-size: .78rem; }
165
166
 
166
167
  /* Buttons */
@@ -199,7 +200,7 @@
199
200
  @media (max-width: 640px) {
200
201
  .hrl-table--stack thead { display: none; }
201
202
  .hrl-table--stack tr { display: block; border-bottom: 6px solid var(--hrl-bg); }
202
- .hrl-table--stack td { display: flex; justify-content: space-between; gap: .8rem; border-bottom: 1px dashed var(--hrl-line); }
203
+ .hrl-table--stack td { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .8rem; border-bottom: 1px dashed var(--hrl-line); overflow-wrap: anywhere; }
203
204
  .hrl-table--stack td::before { content: attr(data-label); color: var(--hrl-muted); font-size: .78rem; }
204
205
  .hrl-table--stack td.hrl-num { text-align: left; }
205
206
  .hrl-table--stack td.hrl-cell--void { display: none; }
@@ -294,11 +295,12 @@
294
295
  .hrl-deflist dd { margin: 0; overflow-wrap: anywhere; }
295
296
 
296
297
  /* Month grid (attendance) */
297
- .hrl-mgrid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
298
+ /* minmax(0, …): a bare 1fr never shrinks below its nowrap tags and pushes Sa/Su off a phone */
299
+ .hrl-mgrid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
298
300
  .hrl-mgrid__head { text-align: center; color: var(--hrl-muted); font-size: .68rem; padding: .2rem 0; }
299
301
  .hrl-mgrid__day {
300
302
  min-height: 44px; border-radius: 7px; background: var(--hrl-card);
301
- border: 1px solid var(--hrl-line); padding: .2rem .3rem; font-size: .72rem;
303
+ border: 1px solid var(--hrl-line); padding: .2rem; font-size: .72rem;
302
304
  display: flex; flex-direction: column; gap: .1rem; position: relative;
303
305
  }
304
306
  .hrl-mgrid__day--muted { opacity: .45; }
@@ -322,7 +324,7 @@
322
324
 
323
325
  /* Long-form policy text. Constrained measure — a policy read across the
324
326
  full width of a laptop is a policy nobody finishes. */
325
- .hrl-prose { max-width: 68ch; }
327
+ .hrl-prose { max-width: 68ch; overflow-wrap: anywhere; }
326
328
  .hrl-prose p { margin: 0 0 .8rem; line-height: 1.6; }
327
329
  .hrl-prose p:last-child { margin-bottom: 0; }
328
330
 
@@ -333,8 +333,10 @@ module HrLite
333
333
  end
334
334
 
335
335
  # Probation: at most one day of leave (any type) in a calendar month.
336
+ # Caps self-service only; HR recording leave is already the approval.
336
337
  def within_probation_cap
337
338
  return unless start_date && days_count
339
+ return if recorded_by_hr?
338
340
  return unless EmployeeProfile.find_by(user_id: user_id)&.on_probation?(start_date)
339
341
 
340
342
  taken = self.class.where(user_id: user_id, status: %w[pending approved])
@@ -20,13 +20,13 @@
20
20
  <% if @appraisal.strengths.present? %>
21
21
  <section class="hrl-card">
22
22
  <h2 class="hrl-card__title">Strengths</h2>
23
- <p><%= simple_format(@appraisal.strengths) %></p>
23
+ <div class="hrl-prose"><%= simple_format(@appraisal.strengths) %></div>
24
24
  </section>
25
25
  <% end %>
26
26
 
27
27
  <% if @appraisal.improvements.present? %>
28
28
  <section class="hrl-card">
29
29
  <h2 class="hrl-card__title">Areas to grow</h2>
30
- <p><%= simple_format(@appraisal.improvements) %></p>
30
+ <div class="hrl-prose"><%= simple_format(@appraisal.improvements) %></div>
31
31
  </section>
32
32
  <% end %>
@@ -27,7 +27,7 @@
27
27
  <% end %>
28
28
  </span>
29
29
  <% if day.record&.check_in_at %>
30
- <span class="hrl-mgrid__tag"><%= day.record.check_in_at.strftime("%H:%M") %><%= day.record.check_out_at ? "–#{day.record.check_out_at.strftime('%H:%M')}" : "" %></span>
30
+ <span class="hrl-mgrid__tag"><%= day.record.check_in_at.strftime("%H:%M") %><% if day.record.check_out_at %><br><%= day.record.check_out_at.strftime("%H:%M") %><% end %></span>
31
31
  <% elsif day.kind == :absent %>
32
32
  <span class="hrl-mgrid__tag">absent</span>
33
33
  <% end %>
@@ -1,3 +1,3 @@
1
1
  module HrLite
2
- VERSION = "0.21.1"
2
+ VERSION = "0.21.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hr_lite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.1
4
+ version: 0.21.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - kshitiz sinha